Android 秒級編譯方案-Freeline安裝使用
什么是Freeline?
Freeline是由螞蟻聚寶Android團(tuán)隊開發(fā)的一款針對Android平臺的增量編譯工具。它可以充分利用緩存文件,在幾秒鐘內(nèi)迅速地對代碼的改動進(jìn)行編譯并部署到設(shè)備上,有效地減少了日常開發(fā)中的大量重新編譯與安裝的耗時。Freeline能夠為Android開發(fā)者節(jié)省很多喝杯咖啡的時間 : )
Freeline將整個編譯過程拆分成多個小模塊,根據(jù)模塊間的依賴關(guān)系并發(fā)進(jìn)行編譯任務(wù)。它可以對所有編譯緩存文件做到充分地利用,真正地做到了“增量”編譯。同時,它也提取了buck的部分組件(dx與DexMerger),來加速構(gòu)建流程。Freeline會在app運行時啟動一條獨立進(jìn)程來運行Socket Server以進(jìn)行開發(fā)機(jī)與app的通信,同時也能確保即使在app出現(xiàn)crash之后,仍然能夠使增量編譯持續(xù)生效。
Freeline是通過multi-dex的方案來實現(xiàn)Java代碼的增量更新的。與此同時,我們也專門對aapt工具做了深度優(yōu)化,給出了獨立的FreelineAapt資源打包工具用來生成增量的資源包以及加快資源包的打包速度。運行期的資源替換,F(xiàn)reeline中使用了Instant-Run的方案。除此之外,F(xiàn)reeline也支持運行期動態(tài)更新so文件。
Freeline會根據(jù)代碼文件的變更情況,自動在全量編譯與增量編譯中進(jìn)行切換。
實際上,F(xiàn)reeline可以在經(jīng)過簡單的改造之后,作為線上熱修復(fù)方案,通過動態(tài)下發(fā)增量資源,來對應(yīng)用進(jìn)行修復(fù)或者資源替換。經(jīng)過壓縮后的增量資源通常都會在100kb以下,用戶可以在移動網(wǎng)絡(luò)的環(huán)境下直接接收到熱補(bǔ)丁。螞蟻聚寶已經(jīng)基于Freeline打造了完整的熱修復(fù)框架,應(yīng)用于線上問題修復(fù)以及A/B Test。
如何使用Freeline?
1.在project-level的build.gradle中添加以下代碼
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.antfortune.freeline:gradle:0.8.3'
}
}
2.在主module的build.gradle中添加以下代碼
apply plugin: 'com.antfortune.freeline'
android {
...
freeline {
hack true
productFlavor "dev"
}
}
dependencies {
...
compile 'com.antfortune.freeline:runtime:0.8.3'
}
3.在app的Application的onCreate方法中初始化Freeline,加入一行代碼
FreelineCore.init(this);
4.下載安裝python,由于Freeline在python3.x版本不適用,所以現(xiàn)在還是用python2.7最好
python2.7下載地址:
https://www.python.org/ftp/python/2.7.12/python-2.7.12.msi
安裝時一路next即可,不過這個地方需要注意下,所有選項都要全部選上如圖即可,此處借用廖雪峰老師的圖
然后驗證是否安裝成功,打開cmd命令窗口,輸入python,類似下圖即成功
若出現(xiàn)“python不是外部或內(nèi)部命令”的提示,則可能是沒有python的安裝目錄添加到path,拷貝python的安裝目錄如:D:\python(這是我的路徑,你的可能不一樣)到環(huán)境變量path中,別忘了加;哦
5.下載Freeline相關(guān)所需插件,文件
打開cmd命令窗口進(jìn)入工程文件根目錄或者直接在android studio中打開Terminal控制臺執(zhí)行以下命令:
gradlew initFreeline
若速度慢,可使用在后面添加參數(shù)gradlew initFreeline -Pmirror
此處注意:
1.需要gradle-2.14.1及以上,為了方便最好使用本地gradle,如圖
2.如果出現(xiàn)中途卡住不動的情況,如圖
可將工程根目錄下的有關(guān)freeline的東西全部刪除,再手動下載freeline的文件拷貝到工程根目錄下
freeline依賴下載地址:https://github.com/alibaba/freeline/releases,下載對應(yīng)的版本即可
然后再次執(zhí)行g(shù)radlew initFreeline命令,即可完成安裝
6.具體使用
命令行執(zhí)行:
python freeline.py
即可編譯運行到設(shè)備上,首次運行可能很慢,后續(xù)代碼更新就快的飛起啦,有時可能已經(jīng)安裝好了,但沒有自動打開,手動打開下就好了
不過這樣也是很麻煩,下載freeline的android studio插件更方便快捷,到as插件搜索freeline,安裝,重啟android studio,然后就會出現(xiàn)這樣一個圖標(biāo),以后編譯運行直接點擊這個就好了
其他注意事項:
1.如果你的as已經(jīng)安裝了Jrebel的話,先卸載掉,不然可能會出問題
2.把instant run所有選項都去掉,如圖
至此,祝使用愉快!