前序
APK通过三方平台加固后,签名丢失,需要重新签名,目前使用JDK的jarsigner工具打包支持V1的签名,想要同时支持v1和v2就要使用google的apksigner工具。
使用方法
apkSinger工具的位置一般在xxx/sdk/build-tools/【对应的sdk版本号】打开进入就能找到apksinger.bat
这个是批处理命令不能直接运行,可以在此目录下打开cmd窗口。
通过使用以下命令对apk包进行重签名:
apksigner.bat sign --ks 你的签名文件名.jks --ks-key-alias 【你的包别名】 【你的包名】.apk
签名前要注意对包进行对齐操作,要不然会报以下错误:
Exception in thread "main" java.nio.file.AccessDeniedException: test-xxx.apk
at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsFileCopy.move(Unknown Source)
at sun.nio.fs.WindowsFileSystemProvider.move(Unknown Source)
at java.nio.file.Files.move(Unknown Source)
at com.android.apksigner.ApkSignerTool.sign(ApkSignerTool.java:342)
at com.android.apksigner.ApkSignerTool.main(ApkSignerTool.java:89)
检查签名的版本命令:
apksigner verify -v --print-certs 【你的包名】.apk
对齐操作的方法
对齐操作的工具包和上边的apksinger是在同一个目录下,使用方法和apksinger类似,也需要cmd命令操作,对齐操作命令如下:
zipalign -v 4 【你的apk包名】 【输出对齐后的apk包名,自己随意取】
检查apk是否对齐的命令如下:
zipalign -c -v 4 【需要检查的apk包名】
以上就是重签名同时支持V1和V2的打包方法,希望你能帮助到你。