自动化流程:
使用此工具(使用来自 Google 的新 apksigner):
https://github.com/patrickfav/uber-apk-signer
免责声明:我是开发者:)
手动流程:
第 1 步:生成密钥库(仅一次)
您需要生成一次密钥库并使用它来签署您的unsigned
apk。使用JDK 提供的keytool
%JAVA_HOME%/bin/
keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app
第 2 步或第 4 步:压缩对齐
zipalign
%ANDROID_HOME%/sdk/build-tools/24.0.2/
如果您想将 apk 上传到 Play 商店,这是一个由 Android SDK 提供的工具,例如,这是一个强制性的优化步骤。
zipalign -p 4 my.apk my-aligned.apk
注意:使用旧的时,jarsigner
您需要在签名后进行zipalign。使用新apksigner
方法时,请在签名之前进行(我知道,这很令人困惑)。在 apksigner 之前调用 zipalign 可以正常工作,因为 apksigner 保留 APK 对齐和压缩(与 jarsigner 不同)。
您可以验证对齐方式
zipalign -c 4 my-aligned.apk
第 3 步:签名和验证
使用 build-tools 24.0.2 及更早版本
使用jarsigner
它,就像 keytool 一样,随 JDK 发行版一起提供, %JAVA_HOME%/bin/
并像这样使用它:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my.keystore my-app.apk my_alias_name
并且可以验证
jarsigner -verify -verbose my_application.apk
使用构建工具 24.0.3 和更新版本
Android 7.0 引入了 APK 签名方案 v2,这是一种新的应用程序签名方案,可提供更快的应用程序安装时间和更多保护,防止未经授权的 APK 文件更改(有关详细信息,请参阅此处和此处)。因此,Google 实现了自己的 apk 签名器,称为apksigner
(duh!) 脚本文件可以在%ANDROID_HOME%/sdk/build-tools/24.0.3/
(.jar 位于/lib
子文件夹中)中找到。像这样使用它
apksigner sign --ks-key-alias alias_name --ks my.keystore my-app.apk
并且可以验证
apksigner verify my-app.apk
官方文档可以在这里找到。