Android 秒級編譯方案-Freeline安裝使用

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所有選項都去掉,如圖

這里寫圖片描述

至此,祝使用愉快!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容