天天看點

android多管道打包(隻編譯一次)大體思路實作步驟

衆所周知,android 預設工具gradle可以配置多個productFlavors,以此實作配置多個不同版本,管道的app應用,筆者認為這個編譯速度很慢,于是乎有了今天的方案。希望能抛磚引玉為大家帶來不一樣的思路,廢話不多說。

  1. 大體思路

gradle可以自定義任務,通過自定義任務可以把編譯的apk 進行複制到不同管道的檔案夾。

不同管道檔案夾内的app 通過 反編譯->修改apk内的資源->重新打包->重新簽名

  1. 實作步驟

  1. gradle自定義任務

此部分不是今天的重點,大家可以自行百度,網上資料一大片

  1. Apk修改内容

  1. 反編譯

使用apktool_2.7.0.jar 通過指令行

C:\ProgramFiles\Java\jdk1.8.0_181\bin\java -jar apktool_2.7.0.jar d -f app.apk

android多管道打包(隻編譯一次)大體思路實作步驟

出現如圖結果,則表示已經完成

  1. 修改

android多管道打包(隻編譯一次)大體思路實作步驟

靜态資源都可以修改,筆者修改了mainfest 和 assert

  1. 重新打包

使用apktool_2.7.0.jar 通過指令行

C:\ProgramFiles\Java\jdk1.8.0_181\bin\java -jar apktool_2.7.0.jar b app

android多管道打包(隻編譯一次)大體思路實作步驟

出現如圖結果,則表示已經完成

  1. 重新簽名

使用apktool_2.7.0.jar 通過指令行

C:\ProgramFiles\Java\jdk1.8.0_181\bin\jarsigner -keystore D:\\test\key.jks -storepass 2023 -signedjar D:\test\app\dist\app_signed.apk D:\test\app\dist\app.apk app

android多管道打包(隻編譯一次)大體思路實作步驟

出現如圖結果,則表示已經完成

指令解釋:

jarsigner -verbose -keystore [簽名檔案的完整路徑名] -signedjar [簽名後apk完整路徑名] [待簽名apk的名稱] [簽名檔案的别名]

至此簡單的修改就結束了,感謝大家的觀看。有興趣的也可以把jar 內建到工程中,就不用指令了,其實就是調用兩個接口。

最後,希望大家把技術用到正規用途,有的小夥伴私信我,讓我幫他破姐VIP 時長的,在此奉勸一句,别再私信我了,請用于學習或者科學研究用途!!!