Android APK重签名 支持V1和V2 签名报报错“:Exception in thread "main" java.nio.file.AccessDeniedException:xxx....

前序

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的打包方法,希望你能帮助到你。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容