Android APP 加固后进行二次签名
使用腾讯的 WeTest 给应用加固后,下载的加固包是没有签名信息的,所以还需要重新签名加固包才能发布。下面是腾讯云的解释:
应用加固为什么必须重签名?
应用加固不可避免的会破坏原有签名,加固后必须对加固包重签名才能发布至应用市场,否则会被提示 “应用未签名”,请务必确保加固前后的签名一致。
一、使用 apksigner
第一步,用 Android Studio 对项目进行打包,生成签名的 apk 文件。
第二步,使用加固平台,对apk包进行加固,加固完成后,得到一个加固后的 apk。
第三步,我们可以使用 Android SDK 自带的 apksigner.bat 对 APK 进行签名操作,apksigner.bat 存放在C:\Users\Administrator\AppData\Local\Android\Sdk\build-tools\33.0.1 目录下。这里根据版本可选。
说明:也可以用 C:\Users\Administrator\AppData\Local\Android\Sdk\build-tools\33.0.1\lib\ 下的 apksigner.jar 来进行签名,用法是差不多的,不过需要在命令前加上 java -jar 命令。如下:
java -jar apksigner.jar sign --ks D:\KeyStore\XC_key.jks --ks-key-alias key0 --ks-pass pass:password --key-pass pass:password --out D:\APP\outputfile.apk D:\APP\inputfile.apk
二、对加固apk进行重新签名
1、使用 cmd 或者 PowerShell 进入到指定的 apksigner.bat 目录,这里如下:
C:\Users\Administrator\AppData\Local\Android\Sdk\build-tools\33.0.1
2、查看apk签名情况,如下:
未重新签名的 apk 文件路径 C:\Users\Administrator\Desktop\abc.apk
apksigner.bat verify -v C:\Users\18745\Desktop\C:\Users\Administrator\Desktop\abc.apk
通过执行命令返回的结果可以看到V1与V2的签名情况。如果是未签名的 APK 返回的的结果:
DOES NOT VERIFY ERROR: Missing META-INF/MANIFEST.MF
这是v1签名的APK返回的的结果:
Verifies Verified
using v1 scheme (JAR signing): true Verified
using v2 scheme (APK Signature Scheme v2): false
这是v1v2都签名的APK返回的的结果:
Verifies Verified
using v1 scheme (JAR signing): true Verified
using v2 scheme (APK Signature Scheme v2): true
3.使用 apksigner.bat 对加固后的 apk 进行重新签名
apksigner.bat sign --ks [签名路径] --ks-key-alias [alias名称] --ks-pass pass:[密码] --key-pass pass:[密码] --out [签名后的新包路径] [待签名的包路径]
或者
java -jar apksigner.jar sign --ks [签名路径] --ks-key-alias [alias名称] --ks-pass pass:[密码] --key-pass pass:[密码] --out [签名后的新包路径] [待签名的包路径]
这里用的是 apksigner.bat,感觉比较方便一些。具体使用:
cd C:\Users\zhxk_app\AppData\Local\Android\Sdk\build-tools\33.0.1\
.\apksigner.bat sign --ks D:\KeyStore\XC_key.jks --ks-key-alias key0 --ks-pass pass:password --key-pass pass:password --out D:\APP\outputfile.apk D:\APP\inputfile.apk
生成签名的 apk 后,再次验证生成的签名 apk 是否有V1、V2签名,签名成功后的 apk 就可以安装到 android 手机上了。