1、現狀分析
工程編譯,是Android應用開發工作中的重要一環,在項目體量越來越大的情況下,編譯耗時也越來越長,拖慢了開發效率
全量編譯/增量編譯/安裝占據了整個流程的大多數時間,假設全量編譯在6分鐘,每天運作10次,每天我們浪費在編譯上的時間就有60分鐘,假設編譯時間是3分鐘,每天節約0.5小時,
全量編譯:項目沒有運作過,沒有生成特定的緩存檔案,初次進行資源代碼的編譯合并流程。比如clean後。多數用于項目的初次編譯打包/清理緩存後編譯時。
增量編譯:在全量編譯後的基礎上進行編譯,改動/新增/删除/添加都會進行改變的編譯不影響整體已有編譯的檔案。多數用于項目的初次編譯/生成緩存檔案後編譯時。
2、編譯流程
整體流程如下
• aapt 打包資源檔案,産生R.java ,resource.arsc , res,manifest.xml
• aidl 産生java接口檔案
• javac 編譯R.java,Aidl産生的java檔案以及工程中用到的源碼産生.class檔案
• R8混淆和代碼壓縮.class檔案,經過d8 生成.dex檔案
• apk builder 将資源包,.dex打包生成apk檔案
• apksigner /jarSigner 會對apk進行簽名
3、編譯耗時檢測
Build Analyaer
Gradle 指令
$ gradlew app:assemble --profile (Windows)
$ ./gradlew app:assembleDebug --profile (Ubuntu,Mac)
scan
$ gradlew app:assemble --scan(Windows)
$ ./gradlew app:assembleDebug --scan(Ubuntu,Mac)
https://gradle.com/s/mshp4gfpxazg6
Android studio
https://juejin.cn/post/7094198918065422350
4、編譯優化正常方案
5、大廠方案