1.签名的概念
为大家所熟知的日常生活中的签名,它是代表某个人的特殊标记,用于唯一标识某个人。而Android 应用程序的签名的本质与日常生活中的签名是一样的,应用程序中的签名也开发人员在应用程序中打上的一种特殊标记。别人在看到这个标记时,他会知道是这个应用程序与你有关或者是你开发的,而不是别人。
2.Android应用程序一定要签名吗
是的,Google公布的Android系统要求每一个公布的应用程序都必须签名。Android应用程序的签名是用来建立程序的开发人员与程序包之间的信任关系,当更新应用程序时,Android系统要求新/旧两个应用程序的签名必须一致。
3.Debug签名
假设你是一个刚入门的开发人员,你会发现你开发的应用程序没有经过自己的签名也能够安装在Android系统的机器上,这是由于ADT工具使用debug数字证书(存在于debug.keystore)自己主动为每一个处于开发阶段的应用程序打上了debug签名。
debug.keystore 也被称为debug 密钥库,为app签名时必备的文件,使用Eclips时会安装ADT(Android Development Tools)插件,ADT自带debug 密钥库(也可称作证书库,由于*.keystore是用来存放数字证书的),文件放在:
系统盘:Userszhangsan.android debug.keystore。
不同的系统密匙库的位置可能存在细微的差异。
4.怎样给应用程序签名
App的签名能够通过两种方式来完毕,使用ADT提供的图形化界面来完毕。或者使用命令行(DOS)命令进行签名。
1)图形化工具进行签名
第一步:导出
选择项目->右键->export -> export Android Application(这里我使用ZHGL这个Android App项目进行演示)
第二步:选择要导出的appproject
第一次使用选择 create new keystore。指定密钥库(.keystore)存放的位置:C:Userschen.jianDesktopAndroidSignature,并设置密钥库的password。
PS:密钥能够为多个应用程序签名哦。建议开发人员拥有一个密钥库即可了。
第四步:创建签名证书
第六步:使用创建好的证书对apk进行签名。
第二步:使用keytool创建数字证书
keytool -genkey -v -keystore ChenJian.keystore -alias androidkeystore_v1 -keyalg RSA -validity 20000
说明:
- keytool是工具名称,-genkey意味着运行的是生成数字证书操作。-v表示将生成证书的具体打印信息出来,显示在dos窗体中;
- -keystore ChenJian.keystore 表示生成的数字证书的文件名称为” ChenJian.keystore “;
- -alias androidkeystore_v1 表示证书的别名为” androidkeystore_v1″。
- -keyalg RSA 表示生成密钥文件所採用的算法为RSA;
- -validity 20000 表示该数字证书的有效期为20000天,意味着20000天之后该证书将失效
在运行上面的命令生成数字证书文件时,会提示你输入一些信息,包含证书的password。
密匙库会被放在当前文件夹C:Userschen.jian ChenJian.keystore。你也能够自己指定文件夹。
第四步 优化app:
zipalign -v 4 Signed_ZHGL.apk Signed_aligned_ZHGL.apk
说明:
- zipalign是工具名称,-v表示在DOS窗体打印出具体的优化信息。
- Signed_ZHGL.apk Signed_aligned_ZHGL.apk 表示对已签名文件Signed_ZHGL.apk进行优化。优化后的文件名称为Signed_aligned_ZHGL.apk
- 说明:假设你曾经的程序是採用默认签名的方式(即debug签名),一旦换了新的签名应用将不能覆盖安装,必须将原先的程序卸载掉,才干安装上。由于程序覆盖安装主要检查两点:
- 两个程序的入口Activity是否同样。
两个程序假设包名不一样。即使其他全部代码全然一样。也不会被视为同一个程序的不同版本 ;
- 两个程序所採用的签名是否同样。假设两个程序所採用的签名不同,即使包名同样。也不会被视为同一个程序的不同版本 。不能覆盖安装。
- 另外。可能有人可能会觉得反正debug签名的应用程序也能安装使用,那也没有必要自己签名了嘛。千万不要这样想。debug签名的应用程序有这样两个限制,或者说风险:
- debug签名的应用程序不能在Android Market上架销售。它会强制你使用自己的签名;
debug.keystore在不同的机器上所生成的可能都不一样,就意味着假设你换了机器进行apk版本 升级,那么将会出现上面那种程序不能覆盖安装的问题。不要小视这个问题,假设你开发的程序仅仅有你自己使用,当然无所谓,卸载再安装就能够了。
但要是你的软件有非常多使用客户,这就是大问题了,就相当于软件不具备升级功能。
6)Eclips 编译生成拥有系统签名的apk
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92921 人正在系统学习中 相关资源:ios签名软件-iOS工具类资源
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!