天天看點

android 二次打包工具,Android小知識:apktool二次打包

工具:apktool 下載下傳位址:https://ibotpeaches.github.io/Apktool/install/

原料:app-debug.apk

拆包執行指令

apktool d app-debug.apk

執行完該指令後,我們可以在目前目錄下看到一個新生成的app-debug目錄,裡面就是拆包後的app相關源碼和配置,其目錄結構與我們的項目結構基本一樣,接下來在進行打包:

打包執行指令

apktool b app-debug (app-debug是前面通過拆包生成的目錄名,也可以改成其他的)

執行完該指令後,我們可以在app-debug目錄下發現多了一個dist子目錄,這個子目錄裡還有一個apk,這個apk就是我們執行該指令後生成的目标apk。

此時,生成的apk并不能安裝,因為還沒有給它簽名

給apk簽名

如果沒有簽名檔案,則建立簽名檔案,執行下面指令

keytool -genkey -alias mykeystore -keyalg RSA -validity 2100 -keystore mykey.keystore

-genkey:生成一個密鑰(簽名檔案)

-alias:簽名檔案别名

-keyalg:生成密鑰對的算法(常用RSA/DSA,DSA隻用于簽名,預設采用DSA)

-validity:簽名檔案的有效期(機關:天)

-keystore:簽名檔案名

mykeystore:簽名檔案别名

android 二次打包工具,Android小知識:apktool二次打包

執行完後會在目前目錄下生成簽名檔案:

android 二次打包工具,Android小知識:apktool二次打包

檢視簽名檔案資訊:

keytool -list -keystore mykey.keystore

android 二次打包工具,Android小知識:apktool二次打包

給apk簽名,使用指令:

jarsigner -verbose -keystore mykey.keystore -signedjar app-debug-signed.apk app-debug.apk mykeystore

android 二次打包工具,Android小知識:apktool二次打包

之後就可以在目前目錄下看到生成進行簽名過的app-debug-signed.apk接下來可能會遇到下面問題

安裝失敗,提示failed to install .\app-debug-signed.apk: Failure [INSTALL_FAILED_TEST_ONLY]

android 二次打包工具,Android小知識:apktool二次打包

原因: Android Studio 3.0會在打debug apk時,在manifest檔案application标簽裡自動添加 android:testOnly=true;屬性

通過檢視剛剛解包的mainfest檔案

android 二次打包工具,Android小知識:apktool二次打包

發現确實添加了該屬性:

android 二次打包工具,Android小知識:apktool二次打包

解決方法:

方法一

在項目中的gradle.properties全局配置中設定:

android.injected.testOnly=false

方法二,安裝加 -t :

adb install -t app-debug-signed.apk

另外,提下我們AS下運作代碼生成的debug包apk,它的預設簽名檔案是debug.keystore

debug.keystore位置: C:\Users\\.android\debug.keystore

debug.keystore的密碼:android

debug.keystore的别名:androiddebugkey