最近将电脑中的JDK升级到了最新的JDK8,没想到在给apk打包签名的时候,发现使用JDK8中的jarsigner命令签名的apk无法安装。最终在android sdk官网http://developer.android.com/查寻到原因
android sdk关于签名工具介绍http://developer.android.com/tools/publishing/app-signing.html#signapp
介绍中有一条注意事项,说JDK7修改了默认的签名算法,所以给apk签名时要自己通过jarsigner命令的-sigalg 和 -digestalg选项分别指定签名算法名字和摘要算法名字,官方文档中给定算法分别是SHA1withRSA和SHA1
如果想指定生成的签名文件.SF和.DSA的名字可通过jarsigner命令的-sigFile选项指定。例如签名时指定-sigFile CERT则生成的签名文件名字就是CERT
jarsigner命令具体用法可参考JDK文档http://docs.oracle.com/javase/6/docs/technotes/tools/windows/jarsigner.html