衆所周知,android 預設工具gradle可以配置多個productFlavors,以此實作配置多個不同版本,管道的app應用,筆者認為這個編譯速度很慢,于是乎有了今天的方案。希望能抛磚引玉為大家帶來不一樣的思路,廢話不多說。
-
大體思路
gradle可以自定義任務,通過自定義任務可以把編譯的apk 進行複制到不同管道的檔案夾。
不同管道檔案夾内的app 通過 反編譯->修改apk内的資源->重新打包->重新簽名
-
實作步驟
-
gradle自定義任務
此部分不是今天的重點,大家可以自行百度,網上資料一大片
-
Apk修改内容
-
反編譯
使用apktool_2.7.0.jar 通過指令行
C:\ProgramFiles\Java\jdk1.8.0_181\bin\java -jar apktool_2.7.0.jar d -f app.apk
出現如圖結果,則表示已經完成
-
修改
靜态資源都可以修改,筆者修改了mainfest 和 assert
-
重新打包
使用apktool_2.7.0.jar 通過指令行
C:\ProgramFiles\Java\jdk1.8.0_181\bin\java -jar apktool_2.7.0.jar b app
出現如圖結果,則表示已經完成
-
重新簽名
使用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
出現如圖結果,則表示已經完成
指令解釋:
jarsigner -verbose -keystore [簽名檔案的完整路徑名] -signedjar [簽名後apk完整路徑名] [待簽名apk的名稱] [簽名檔案的别名]
至此簡單的修改就結束了,感謝大家的觀看。有興趣的也可以把jar 內建到工程中,就不用指令了,其實就是調用兩個接口。
最後,希望大家把技術用到正規用途,有的小夥伴私信我,讓我幫他破姐VIP 時長的,在此奉勸一句,别再私信我了,請用于學習或者科學研究用途!!!