【发布时间】:2012-06-10 09:49:24
【问题描述】:
目前我正在使用私有密钥库文件签署 apk,但我想使用不同的密钥库文件签署该 apk。我怎样才能辞职那个apk..?
【问题讨论】:
-
不,伙计,我不这么认为
-
请解释..1-您是要签署同一个签名的apk还是同一个项目的新apk......
-
我要退出同一个apk
目前我正在使用私有密钥库文件签署 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
第 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 -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)
也可以使用开源的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(outfile) unsign.apk(unsign apk) xxxxxalias(你的别名)
添加参数-digestalg SHA1 -sigalg MD5withRSA
jarsigner -verbose -digestalg SHA1 -sigalg MD5withRSA -keystore xxxx.keystore(你的密钥库) -signedjar out_sign.apk(outfile) unsign.apk(unsign apk) xxxxxalias(你的别名)
【讨论】: