23

目前我正在使用私有密钥库文件签署 apk,但我想用不同的密钥库文件签署该 apk。我怎样才能辞职那个apk ..?

4

4 回答 4

33

您可以使用不同的密钥库为您的 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


其他命令可能会有所帮助:

  1. 使用 keytool 生成新密钥
keytool -genkey -alias -keystore  
  1. 列出键
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
于 2013-03-14T14:47:12.940 回答
19

你应该检查下面的SO线程

我可以用不同的证书辞职 .apk

或者这个也可以帮助你

于 2012-06-06T11:27:02.610 回答
8

你也可以使用开源的 apk-resigner 脚本,非常好用。

APK-resigner:https ://github.com/onbiron/apk-resigner

./signapk.sh calculator.apk ~/.android/debug.keystore android androiddebugkey

此外,如果您想使用调试密钥对 APK 进行签名,您可以使用。

./signapk.sh calculator.apk 
于 2013-04-03T11:27:37.550 回答
7
  1. 删除旧标志

    zip -d xxxx.apk(你的 apk 文件) META-INF/*

  2. 签名apk

    jarsigner -verbose -keystore xxxx.keystore(你的密钥库) -signedjar out_sign.apk(outfile) unsign.apk(unsign apk) xxxxxalias(你的别名)

  3. 如果签名 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(你的别名)

于 2016-07-31T04:53:59.397 回答