应用签名
Android通过数字签名来标识应用程序的作者和在应用程序之间建立信任关系,不是用来决定用户可不可以安装该应用程序。android的这个签名由应用程序的作者完成,并不需要权威的数字证书签名机构认证,他只是用来让应用程序包自我认证的。Android系统默认自动给应用程序签名,ADT会自动使用debug密钥为应用程序签名。所以我们使用Android Studio生成的Debug的apk包是可以安装至模拟器或者真机上面的。
通常debug密钥是一个名为debug.keystore的文件,位置位于电脑的:
/Documents and Settings/username/.Android/debug.keystore,其中的username是电脑的用户名。
手动签名
你可以使用工具进行签名:
给apk签名一共要用到3个工具(3个命令),分别是:keytool、jarsigner和zipalign
1)keytool:生成数字证书,即密钥,也就是上面说到的扩展名为.keystore的那类文件;
2)jarsigner:使用数字证书给apk文件签名;
3)zipalign:对签名后的apk进行优化,提高与Android系统交互的效率(Android SDK1.6版本开始包含此工具)
你也可以使用Android Studio的手动生成签名的工具,然后进行apk签名。
1)首先在Build里面选择Generate Signed APK.
2)若你没有签名文件就Create new 创建一个新的,若有就Choose existing 从文件管理器中选择,然后填入密码
3 - 1)若你创建一个签名文件。选择key store path保存的路径,填写keys tore和key密码。kety store密码和key密码在后面会用到。其他信息选填,按实际情况写就好,是关于开发者个人或者公司的一些信息。
3 - 2)在第二步填入相关信息之后,点击Finish即可生成一个带签名的apk。
团队开发
可能有人可能会认为反正debug签名的应用程序也能安装使用,那也没有必要自己签名了嘛。千万不要这样想,debug签名的应用程序有这样两个限制,或者说风险:
1)debug签名的应用程序不能在Android Market上架销售,它会强制你使用自己的签名;
2)Debug模式下签名用的证书(默认是Eclipse/ADT和Ant编译)自从它创建之日起,1年后就会失效。
3)debug.keystore在不同的机器上所生成的可能都不一样,就意味着如果你换了机器进行apk版本升级,那么将会出现上面那种程序不能覆盖安装的问题。不要小视这个问题,如果你开发的程序只有你自己使用,当然无所谓,卸载再安装就可以了。但要是你的软件有很多使用客户,这就是大问题了,就相当于软件不具备升级功能!
手动绑定签名
你还可以手动绑定刚才自己创建的签名至工程文件中,这样生成的直接就是签名版本。
1)在File选项中打开Project Structure
2)然后再你app的Signing设置中点击那个绿色的 + 号,将签名的各种信息填写进去绑定就好。
3)在Android Studio编译完成后,会在build.gradle文件中,多出这样的配置信息。
signingConfigs{
config{
keyAlias 'haha'
keyPassword '***********'
storeFile file('D:/sadaharu.jks')
storePassword '***********'
}
}
4)在下方选择Terminal。
5)通过命令行生成MD5值和SHA1值
将目录切换成keystore.jks文件目录,输入keytool -list -v -keystore keystore.jks。按下回车键。输入keystore密码
集成自动打包环境Jenkins
这里开发工程师每一次都通过复杂的方式去签名再给测试工程师去测试是十分繁琐的,而且使用Git管理开发的时候,大家分支不同以及提交的测试版本不同,多次重复去这样给测试实在是很麻烦的一件事。
需要集成自动打包环境Jenkins的可以参考:
http://blog.csdn.net/mabeijianxi/article/details/52680283
当集成好之后,你就可以将你Android Studio上面自动生成的debug.apk。放入Jenkins指定的文件夹中,然后你在Jenkins中操作build,这样就可以拿到一个签名版本,直接给测试使用,十分方便与快捷,特别适合团队开发使用。