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 

 

 

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