APK签名之apksigner签名工具
APK签名之apksigner签名工具
0x00 参考
apksigner官网:https://developer.android.google.cn/studio/command-line/apksigner?hl=zh-cn
Android中APK签名工具之jarsigner和apksigner详解:https://www.jb51.net/article/141954.htm
Android的:https://zhuanlan.zhihu.com/p/541983756
0x01 V1和V2签名工具
jarsigner
是JDK提供的针对jar包签名的通用工具,位于JDK/bin/jarsigner.exe
,仅支持V1签名apksigner
是Google 官方提供的针对 Android apk 签名及验证的专用工具,位于Android SDK/build-tools/SDK版本/apksigner.bat
,支持apk的多种签名方案
不管是 apk 包,还是 jar 包,本质都是 zip 格式的压缩包,所以它们的签名过程都差不多(仅限V1签名),以上两个工具都可以对 Android apk 包进行签名.
注意:apksigner 工具默认同时使用V1+V2+V3签名方案,以兼容 Android7.0以下系统版本
0x02 签名命令
进入Android SDK/build-tools/SDK版本
,输入:
1 | .\apksigner sign --v1-signing-enabled true --v2-signing-enabled true --ks D:\apk\test.jks --in D:\apk\xiaomi-unsign.apk --out D:\apk\xiaomi-signed.apk |
参数说明:
–v1-signing-enabled <true | false>
确定 apksigner 是否会使用基于 JAR 的传统签名方案为给定的 APK 软件包签名。默认情况下,该工具会使用 –min-sdk-version 和 –max-sdk-version 的值来决定何时采用此签名方案。
–v2-signing-enabled <true | false>
确定 apksigner 是否会使用 APK 签名方案 v2 为给定的 APK 软件包签名。默认情况下,该工具会使用 –min-sdk-version 和 –max-sdk-version 的值来决定何时采用此签名方案。
–v3-signing-enabled <true | false>
确定 apksigner 是否会使用 APK 签名方案 v3 为给定的 APK 软件包签名。默认情况下,该工具会使用 –min-sdk-version 和 –max-sdk-version 的值来决定何时采用此签名方案。
–v4-signing-enabled <true | false | only>
确定 apksigner 是否会使用 APK 签名方案 v4 为给定的 APK 软件包签名。此方案会在单独的文件 (apk-name.apk.idsig) 中生成签名。如果为 true 并且 APK 未签名,则系统会根据 –min-sdk-version 和 –max-sdk-version 的值生成 v2 或 v3 签名。然后,该命令会根据已签名的 APK 的内容生成 .idsig 文件。
使用 only 仅生成 v4 签名,而不会修改 APK 及其在调用前具有的任何签名。如果 APK 没有 v2 或 v3 签名,或者签名使用的密钥不同于为当前调用提供的密钥,则 only 会失败。
默认情况下,该工具会使用 –min-sdk-version 和 –max-sdk-version 的值来决定何时采用此签名方案。
0x03 验证命令
1 | .\apksigner verify -v D:\apk\xiaomi-signed.apk |
APK签名之apksigner签名工具
https://denchopen.github.io/blog/2023/08/15/APK签名之apksigner签名工具/