目前我正在使用私有密钥库文件签署 apk,但我想用不同的密钥库文件签署该 apk。我怎样才能辞职那个apk ..?
4 回答
您可以使用不同的密钥库为您的 apk 签名。
按着这些次序:
签署释放:$1.apk -> $1_release.apk"
第 1 步:删除任何以前的签名
- 将您的扩展名更改
.apk
为.zip
. - 打开并删除文件夹 META-INF
- 将扩展名更改为
.apk
或
命令:zip [originalapk]
示例:zip "$1".apk -d
第 2 步:使用 release.keystore 签名:
命令:
jarsigner –verbose –keystore [keystorefile] –signedjar [unalignedapk] [originalapk] alias_name
例子:
C:\Program Files\Java\jdk1.6.0_43\bin> jarsigner -verbose -keystore release.keystore -signedjar "$1"_unaligned.apk "$1".apk release
第 3 步:对齐
命令:zipalign -f 4 [unalignedapk] [releaseapk]
例子:
C:\Users\Downloads\adt-bundle-windows-x86\adt-bundle-windows-x86\sdk\too ls>zipalign -f 4 "$1"_unaligned.apk "$1"_release.apk
第 4 步:清理
命令:rm 4 [unalignedapk]
示例:rm "$1"_unaligned.apk
其他命令可能会有所帮助:
- 使用 keytool 生成新密钥
keytool -genkey -alias -keystore
- 列出键
keytool -list -keystore
笔记:
为了签署我们的 apk,我们已将 JDK 从 1.7 降级到 1.6.0_43 更新。
原因:
从 JDK 7 开始,默认签名算法已更改,要求您在签名 APK 时指定签名和摘要算法(-sigalg 和 -digestalg)。
命令:
jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore [keystorefile] [originalapk] alias_name
你也可以使用开源的 apk-resigner 脚本,非常好用。
APK-resigner:https ://github.com/onbiron/apk-resigner
./signapk.sh calculator.apk ~/.android/debug.keystore android androiddebugkey
此外,如果您想使用调试密钥对 APK 进行签名,您可以使用。
./signapk.sh calculator.apk
- 删除旧标志
zip -d xxxx.apk(你的 apk 文件) META-INF/*
- 签名apk
jarsigner -verbose -keystore xxxx.keystore(你的密钥库) -signedjar out_sign.apk(outfile) unsign.apk(unsign apk) xxxxxalias(你的别名)
- 如果签名 apk 不起作用并且 jdk >= 1.7
添加参数-digestalg SHA1 -sigalg MD5withRSA
jarsigner -verbose -digestalg SHA1 -sigalg MD5withRSA -keystore xxxx.keystore(你的密钥库) -signedjar out_sign.apk(outfile) unsign.apk(unsign apk) xxxxxalias(你的别名)