1. 程式人生 > >Android使用apksigner對apk進行v2簽名問題

Android使用apksigner對apk進行v2簽名問題

關於Android二次簽名問題:參考博文

在此處著重說說我在二次簽名是遇見的坑。在工作中接到需求:對加固後的Android APK 進行二次簽名。在查閱Google 官方文件之後,使用apksigner 進行二次簽名。 

先簡述我參考博文的意思:

(1)先找到電腦中25或者25以上版本的SDK的build-tools\版本號的目錄,並把需要簽名的安裝包放在該目錄下。(2)使用zipalign將安裝包對齊(一定要先將安裝包對齊):開啟cmd,將目錄切換到sdk的build-tools\版本號的目錄下(也可以在該目錄下面點選空白區域再按住 Shift+滑鼠右鍵 在此處開啟命令視窗),使用命令:zipalign -v -p 4 input.apk output.apk進行對其操作,其中input.apk是需要簽名的安裝包,output.apk是對齊之後的的安裝包。(3)把對齊後的安裝包apk檔案放到build-tools\版本號下的lib檔案下,使用apksigner對安裝包進行簽名:開啟cmd,將目錄切換至當前目錄下,使用如下命令:java -jar apksigner.jar sign --ks kestore的路徑 --out output.apk input.apk 然後會提示輸入keystore的密碼,輸入後回車即可完成簽名(
其中input.apk是對齊之後需要簽名的安裝包,output.apk是最終完成簽名的安裝包)。 kestore的路徑,也可以直接填寫keystore(確保ksystore在同級目錄下)(4)檢查是否簽名成功:依舊在當前目錄下開啟cmd,然後輸入如下命令:java -jar apksigner.jar verify -v my.apk。如果v1 scheme和v2 scheme的值都為true,即表示簽名成功。

 遇見問題:Failed to determine APK is minimum supported platform version,大體意思就是無法確定APK是最低支援的平臺版本(也就是minSdkVersion的值)

    解決辦法:解開還未簽名的apk檢視裡面的AndroidManifest.xml 是否配置指定minSdkVersion,無果沒有需要在觸寶之前新增上去;如果在AndroidManifest.xml 已經指定了minSdkVersion ,但是出包之後卻找不到minSdkVersion,說明在出包時各個引用的JAR 或者aar 裡面AndroidManifest.xml 有衝突,在出包時候合併AndroidManifest.xml 出問題了。這時需要你去查出問題的原因,此處不對AndroidManifest.xml 合併做解釋。

此文僅作共享參考,如果不足歡迎指出。

參考博文:https://blog.csdn.net/Mrzhouxu/article/details/79225439