用不同的密钥库重新签名apk

Roo*_*kie 21 android sign apk

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

Har*_*ani 28

您可以使用不同的密钥库重新签名您的apk.

跟着这些步骤:

签署发布: $1.apk -> $1_release.apk"

第1步:删除任何以前的签名

  • 改变你的延伸.apk.zip.
  • 打开并删除文件夹META-INF
  • 将扩展名更改为.apk
    Or
    Command:zip [originalapk]
    示例:zip "$1".apk -d

第2步:使用release.keystore进行签名:

命令:

jarsigner –verbose –keystore [keystorefile] –signedjar [unalignedapk] [originalapk] alias_name
Run Code Online (Sandbox Code Playgroud)

例:

C:\Program Files\Java\jdk1.6.0_43\bin> jarsigner -verbose -keystore release.keystore -signedjar "$1"_unaligned.apk "$1".apk release
Run Code Online (Sandbox Code Playgroud)

第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
Run Code Online (Sandbox Code Playgroud)

第4步:清理

命令:rm 4 [unalignedapk]
示例:rm "$1"_unaligned.apk


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

  1. 使用keytool生成新密钥
keytool -genkey -alias  -keystore  
  1. 列出键
keytool -list -keystore 

注意:

为了签署我们的申请,我们已将JDK从1.7降级到1.6.0_43更新.

原因:

从JDK 7开始,默认的签名算法已经更改,要求您在签署APK时指定签名和摘要算法(-sigalg和-digestalg).

命令:

jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore [keystorefile] [originalapk] alias_name
Run Code Online (Sandbox Code Playgroud)


swi*_*Boy 17

你应该检查下面的SO线程

我可以使用不同的证书重新签名.apk吗?

或者这个也可以帮助你


Fat*_*tih 7

您还可以使用开源的apk-resigner脚本,它非常易于使用.

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

./signapk.sh calculator.apk ~/.android/debug.keystore android androiddebugkey
Run Code Online (Sandbox Code Playgroud)

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

./signapk.sh calculator.apk 
Run Code Online (Sandbox Code Playgroud)


lin*_*yfh 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

    添加params -digestalg SHA1 -sigalg MD5withRSA
    jarsigner -verbose -digestalg SHA1 -sigalg MD5withRSA -keystore xxxx.keystore(你的密钥库)-signedjar out_sign.apk(outfile)unsign.apk(unsign apk)xxxxxalias(你的别名)