目前我正在使用私钥库文件签名APK,但我想用不同的密钥库文件签名该APK。如何重新签名这个APK..?
您可以使用不同的密钥库重新签名您的apk。
按照以下步骤操作:
发布签名:$1.apk → $1_release.apk
步骤1:删除任何以前的签名
.apk
扩展名更改为.zip
。.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
第三步:对齐
命令:zipalign -f 4 [未对齐的apk文件] [发布版apk文件]
示例:
C:\Users\Downloads\adt-bundle-windows-x86\adt-bundle-windows-x86\sdk\too ls>zipalign -f 4 "$1"_unaligned.apk "$1"_release.apk
第四步:清理
命令:rm 4 [unalignedapk]
示例:rm "$1"_unaligned.apk
其他有用的命令:
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
zipalign -p -f 4
(请注意额外的 -p
)。 - Erhannis你也可以使用开源的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/*
jarsigner -verbose -keystore xxxx.keystore(你的密钥库) -signedjar out_sign.apk(输出的文件名) unsign.apk(未签名apk文件) xxxxxalias(你的别名)
添加参数-digestalg SHA1 -sigalg MD5withRSA
jarsigner -verbose -digestalg SHA1 -sigalg MD5withRSA -keystore xxxx.keystore(你的密钥库) -signedjar out_sign.apk(输出的文件名) unsign.apk(未签名apk文件) xxxxxalias(你的别名)