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
2
3
.\apksigner verify -v D:\apk\xiaomi-signed.apk

keytool -printcert -jarfile D:\apk\xiaomi-signed.apk

20230817212409

作者

Dench

发布于

2023-08-15

更新于

2023-08-15

许可协议

CC BY-NC-SA 4.0

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×