Android之通过 apksigner 对 apk 进行 手动签名

注意:答名使用的 build-tools 里sdk 版本,需要等于或高于 Android studio compileSdkVersion 版本,否则可能会崩溃,异常;

Android 手机正常是不能安装没有签名的apk,当然你可以使用 adb 安装;正常流程无法安装;

1. apksigner 的介绍及安装

apksigner 包含在 Android SDK Tools 中,可通过 android studio 中 Tools -> Android -> SDK Manager -> SDK Tools 查看是否安装。
安装了 SDK Tools 后,在 %ANDROID_HOME%/build-tools 文件夹下对应的版本就能找到。

 请将具体的 版本 配置到  D\androidSDK\build-tools\28.0.2  然后我就把这个路径配置到用户变量中,(注意:在配置这个变量之后,你的AS一定要重新启动哦,如果用CMD也需要重新打开)

2. 使用 apksigner

如果不知道 apk 是否被签名,可以通过如下命令来检查

apksigner verify app.apk

 app.apk 就是 apk 的文件路径。

2.1  对齐工具使用的是Android Apk优化工具Zipalign,对齐命令为:

Zipalign -v 4 src.apk dst.apk

尽管在签名前先对app进行了对齐操作,但是并不能保证每次都能成功;因为对齐操作会出现对齐失败的情况。

对于这种失败的情况,通过研究实验得出,只需要针对 对齐失败的apk 进行第二次对齐,就基本能对齐成功,最后再对app进行签名操作。

2.2 apksigner.jar签名命令

V1签名方式

-verbose -> 输出签名过程的详细信息
-keystore [keystorePath] -> 密钥的库的位置
-signedjar [apkOut] -> 签名后的输出文件名
[apkin] -> 待签名的文件名
[alias] -> 证书别名
jarsigner -verbose -keystore [keystorePath] -signedjar [apkOut] [apkin] [alias]

例:

apksigner sign --ks E:\testcode\dexShell\proxy_tools\proxy1.jks --ks-key-alias wwy --ks-pass pass:123456 --key-pass pass:123456 --out  E:\testcode\dexShell\app\build\outputs\apk\debug\app-signed-aligned.apk E:\testcode\dexShell\app\build\outputs\apk\debug\app-unsigned-aligned.apk

V2

在 Android 7.0 Nougat 中引入了全新的 APK Signature Scheme v2签名方式, 需要 有25或者25以上版本的SDK的build-tools\

apksigner sign -verbose --ks E:\testcode\dexShell\proxy_tools\proxy1.jks --v1-signing-enabled false --v2-signing-enabled true --ks-key-alias wwy --ks-pass pass:123456 --key-pass pass:123456 --out  E:\testcode\dexShell\app\build\outputs\apk\debug\app-signed-aligned.apk E:\testcode\dexShell\app\build\outputs\apk\debug\app-unsigned-aligned.apk

或者:

 打开cmd,把目录切换到SDK的build-tools目录下(例如 xxx\build-tools\28.0.2\lib,需要配置 java 环境变量),执行:

 

java -jar apksigner.jar sign -verbose --ks zs.keystore --v1-signing-enabled false --v2-signing-enabled true --ks-pass pass:123123 --ks-key-alias zs.keystore --key-pass 123123 --out test_dst.apk test_src.apk 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章