在 APK 包上传到一些应用市场时,通常要求开发者对 APK 进行签名,下面记录一下签名步骤。
这里的签名操作,与 Unity Build APK 时是否使用了 keystore 无任何关系。
1. 首先使用 keytool 工具生成证书
keytool -genkey -v -keystore game.keystore -alias game.keystore -keyalg RSA -validity 20000
参数说明:
-genkey
执 行生成证书操作-v
将生成证书的详细过程显示出来-keystore game.keystore
生成的证书文件名为 game.keystore-alias game.keystore
表示证书别名为 game.keystore-keyalg RSA
表示生成密钥文件采用的算法为 RSA-validity 20000
表示证书有效期为 20000 天
在执行上面的命令生成数字证书文件时,会提示你输入一些信息,包括证书的密码,根据提示输入就行,上面的命令中,
game.keystore
可以换成自己想要的名字
2. 使用 jarsigner 工具为 APK 签名
jarsigner -verbose -keystore game.keystore -signedjar game_signed.apk game.apk game.keystore
参数说明:
-verbose
将签名过程显示出来-keystore game.keystore
签名所使用的证书文件(就是上一步中生成的,注意路径)-signedjar game_signed.apk game.apk
表示给 game.apk 签名,签名后生成新的 apk 文件名为 game_signed.apkgame.keystore
最后面的对应证书的别名,也就是第一步中-alias xxxx.keystore
的那个名字
3. 使用 zipalign 工具优化已签名的 Apk (这一步不做也可以)
zipalign -v 4 game_signed.apk game_signed_aligned.apk
参数说明:
-v
将优化信息显示出来game_signed.apk
原始的 Apk 文件名game_signed_aligned.apk
优化后的 Apk 文件名
4. 查看已签名的 Apk 的签名信息
keytool -list -printcert -jarfile xxx.apk