在 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.apk
  • game.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