安卓 apk 包重新签名解决方案
Posted 半身风雪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓 apk 包重新签名解决方案相关的知识,希望对你有一定的参考价值。
对于客户提供的已签名apk进行再次签名的方法如下:
1、使用apktool工具,将原apk的签名进行删除:命令如下:apktool d test.apk
2、对删除签名之后的文件夹进行再次打包,此时无签名,命令如下:apktool b test,此时在test目录下会有一个dist文件夹,dist下面的就是重新打包的apk;
3、使用jarsigner对步骤2当中重新打包的apk进行签名,命令如下:jarsigner -verbose -keystore debug.keystore -sigfile cert -storepass android -signedjar test_signed.apk -sigalg SHA256withRSA test-new.apk androiddebugkey
jarsigner命令说明:
-keystore后面为keystore
-sigfile 指定.SF和.RSA文件的文件名,如果不输入-sigfile,则默认使用keystore别名的前8个字符作为文件名
-storepass 指定keystore的密码
-sigalg 指定摘要算法
-digestalg 指定签名算法,如果指定SHA1则使用SHA1签名,如果不指定,则使用SHA256
androiddebugkey 为keystore的别名
示例:
jarsigner -verbose -keystore debug.keystore -storepass android -signedjar test_signed.apk -digestalg SHA1 -sigalg MD5withRSA test.apk androiddebugkey
apksigner 命令说明:
java -jar apksigner.jar sign --ks debug.keystore --ks-key-alias androiddebugkey --ks-pass pass:android --key-pass pass:android --out test-new_sign.apk test-new.apk
–ks 后面为keystore
–ks-key-alias 后面为keystore别名
–ks-pass pass: 后面为keystore的密码
–key-pass pass: 后面为keystore的密码
–v1-signing-enabled 是否开启V1签名,默认开启
–v2-signing-enabled 是否开启V2签名,默认开启(apksigner sign --v2-signing-enabled false --ks 密钥库名 xxx.apk)
–out 为输出的apk
apksigner.jar所在目录:E:\\studio_sdk\\build-tools\\28.0.3\\lib
使用示例:
java -jar E:\\studio_sdk\\build-tools\\28.0.3\\lib\\apksigner.jar sign --ks application.keystore --ks-key-alias androiddebugkey --ks-pass pass:android --key-pass pass:android --out cashier_system_tablet-release_signed.apk cashier_system_tablet-release_unsign.apk
以上是关于安卓 apk 包重新签名解决方案的主要内容,如果未能解决你的问题,请参考以下文章