Android秒級編譯方案-FreeLine
Freeline 是什麼?
Freeline 是一款 Android 平臺上的秒級編譯方案,能夠顯著地提高 Android 工程的編譯速度
為什麼使用FreeLine
隨著Android app 工程越來越大,module越來越多,構建越來越慢有時能有十幾min;FreeLine除了首次比較慢外,以後基本都是10s以內,能極大提高開發者效率,有效解決開發者的痛點
FreeLine支援的特性
- 支援標準的多模組 Gradle 工程的增量構建
- 併發執行增量編譯任務
- 程序級別異常隔離機制
- 支援 so 動態更新
- 支援 resource.arsc 快取
- 支援 retrolambda
- 支援 DataBinding
- 支援各類主流注解庫(APT)
- 支援 Windows,Linux,Mac 平臺
以下列表為 Freeline 支援的熱更新情況:
` | Java | drawable, layout, etc. | res/values | native so |
---|---|---|---|---|
add | √ | √ | √ | √ |
change | √ | √ | √ | √ |
remove | √ | √ | x | - |
Freeline 已經分別在 API 17,19,22,23的 Android 模擬器、Android 6.0 Nexus 6P 以及 Android 4.4 錘子手機上經過測試。如果想要充分體驗 Freeline 增量編譯的速度的話,最好使用 Android 5.0+ 的裝置
接入
方法一:AndroidStudio外掛
首先按照freeLine外掛 進入Preferences → Plugins → Browse repositories 輸入freeline關鍵字 安裝外掛,安裝完畢重啟AS;在工具欄會出現
點選freeline外掛按鈕,就可以享受freeline的便捷了,注意首次會執行耗時的全量編譯過程。
首次使用freeline時,freeline外掛會檢測你的app是否配置了freeline,如果沒有配置會彈窗提示,直接點選”確定”,此時外掛會自動修改app 配置檔案,並自動安裝 Freeline 的依賴檔案
方法二:手動配置
進入project 根 build.gradle檔案 新增freeline依賴
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files classpath 'com.antfortune.freeline:gradle:0.8.6'//add freeline dependencies } }
進入主工程module 編輯build.gradle
apply plugin: 'com.antfortune.freeline' android{ ... }
在命令列執行以下命令來下載 freeline 的 python 和二進位制依賴
gradlew initFreeline //for Windows[CMD] /gradlew initFreeline // for Linux/Mac
對於國內的使用者來說,如果你的下載的時候速度很慢,你也可以加上引數,執行
gradlew initFreeline -Pmirror
這樣就會從國內映象地址來下載
配置成功後以後每次除錯就可以使用下面命令或者點選AS工具欄”freeline”按鈕
python freeline.py
FreeLine缺陷
- 第一次增量資源編譯的時候可能會有點慢,因為需要額外傳遞一個完整的資源包
- 不支援刪除帶id的資源,否則可能導致aapt編譯出錯
- 暫不支援抽象類的增量編譯
- 部分 APT 外掛可能需要單獨適配
- 不支援開啟 Jack 編譯
- 不支援 Kotlin / Groovy / Scala
更多詳情