安卓 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 包重新签名解决方案的主要内容,如果未能解决你的问题,请参考以下文章

PHP获取安卓apk包里的apk签名

APK包名修改 请问如何修改APK包名

怎么给修改后的apk重新签名?

Android中APK签名工具之jarsigner和apksigner详解

delphixe11apk签名无效安装失败

安卓手机,用APK签名工具时,签名成功后安装包显示为“解析包时出现问题",而签名之前的安装包则显示