AndroidStudio Freeline實現(xiàn)工程秒級編譯

Android開發(fā)工具編譯痛點

現(xiàn)在Android開發(fā)工具應該大部分都是Android Studio吧墓怀,對于一個大型App來說,動輒就是十幾個工程相互依賴逛薇,稍微改幾行代碼捺疼,跑一下都得好幾分鐘,當然這跟電腦的配置也有關系永罚。雖然目前google推出InstantRun,在AS 2.0上使用的一個插件卧秘,用于提高編譯速度呢袱,但是就我使用后的感覺來說,并不是很理想翅敌,可能是我們這邊工程較為復雜羞福,編譯完完整的工程也得需要一兩分鐘。在這里羨慕下Xcode秒級編譯速度蚯涮,肯定的是治专,很多Android開發(fā)友們也有這樣的感覺。

為了解決這個痛點遭顶,最近公司有一個同事調研了Freeline這個工具张峰,結果是非常驚喜的,增量編譯是秒級別的棒旗,在這里喘批,我不騙大家!铣揉!很榮幸可以認識使用它饶深。

Freeline介紹

Freeline是螞蟻金服旗下一站式理財平臺螞蟻聚寶團隊在Android平臺上的量身定做的一個基于動態(tài)替換的編譯方案,穩(wěn)定性方面:完善的基線對齊逛拱,進程級別異常隔離機制敌厘。性能方面:內部采用了類似Facebook的開源工具buck的多工程多任務并發(fā)思想, 并對代碼及資源編譯流程做了深入的性能優(yōu)化。

簡單來說朽合,就是阿里提供的一個增量編譯方案俱两,主要是為了加快日常開發(fā)過程中的項目編譯速度,但是目前只支持debug模式非混淆的開發(fā)旁舰。

Pros
支持大多數(shù)場景的增量編譯
支持retrolambda與注解
支持so動態(tài)替換
支持Windows/Linux/macOS
App crash后锋华,仍然可以通過增量編譯來修復
大多數(shù)情況下增量編譯可以在10s內完成

Cons
初次接入可能存在一定的問題,需要稍微花點時間來解決
在簡單的工程上箭窜,與其他構建方案相比毯焕,沒有明顯的優(yōu)勢
不支持刪除帶id的資源,會報錯
不支持Kotlin

這邊直接進入Freeline的使用方法講解,使用其實也很簡單纳猫,請跟著司機走~

Freeline使用

1.Freeline接入

  • 在根目錄的build.gradle中添加classpath 'com.antfortune.freeline:gradle:${latest-version}'婆咸,目前最新版本為0.8.2
  • 在主工程(application工程)的build.gradle中添加 apply plugin: 'com.antfortune.freeline'
  • ./gradlew initFreeline -Pmirror:初始化Freeline相關依賴, 也可以使用參數(shù)-PfreelineVersion={your-specific-version}來下載特定版本的 freeline 依賴,在所在項目的終端運行以上命令行即可芜辕。

Ps:

  1. 項目路徑不能包含中文尚骄、空格;
  2. 命令行符號有誤侵续,應該是./gradlew initFreeline -Pmirror “-”是減號倔丈,并且建議還是要加上鏡像-Pmirror否則下載很慢

上面配置可見下圖:

根目錄-build.gradle
主工程—build.gradle
初始化Freeline依賴
初始化Freeline成功

2.日常開發(fā)-增量編譯與全量編譯

  • 增量編譯:python freeline.py
  • 全量編譯:python freeline.py -f

Ps:

  1. 第一次必須全量編譯,記錄設置工程文件的修改信息状蜗,后面才可以增量編譯需五,第一次全量編譯都比較慢,所以大家要耐著心等待編譯完成.
  2. 如果刪除帶id的資源則必須手動強制全量更新轧坎,增量更新會報錯
  3. Freeline目前只支持debug buildType宏邮,并且不支持混淆
  4. gradle的改變都會觸發(fā)全量更新
  5. 從Freeline的編譯切換到as的編譯,必須先clean build一次
  6. 增量更新有可能啟動不了關閉的app缸血,但修改已經更新到app里蜜氨,手動啟動app即可看到

全量編譯:

全量編譯

當全量編譯完成,我改動二十幾行代碼捎泻,進行增量編譯:

改動代碼后的增量編譯

結果表示飒炎,這個工具很強大,讓我們開發(fā)效率直線上升族扰,不用再苦苦等著緩慢編譯的完成厌丑,使用方法簡單。為了不加班渔呵,大家趕緊用起來吧怒竿!

源碼可見:https://github.com/alibaba/freeline
如果你的工程結構較為復雜,在第一次使用freeline編譯的時候報錯了的話扩氢,你可以添加一些freeline提供的配置項耕驰,來適配你的工程。具體可以看Freeline DSL References录豺。

么么噠朦肘!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市双饥,隨后出現(xiàn)的幾起案子媒抠,更是在濱河造成了極大的恐慌,老刑警劉巖咏花,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件趴生,死亡現(xiàn)場離奇詭異阀趴,居然都是意外死亡,警方通過查閱死者的電腦和手機苍匆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門刘急,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人浸踩,你說我怎么就攤上這事叔汁。” “怎么了检碗?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵据块,是天一觀的道長。 經常有香客問我折剃,道長瑰钮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任微驶,我火速辦了婚禮,結果婚禮上开睡,老公的妹妹穿的比我還像新娘因苹。我一直安慰自己,他們只是感情好篇恒,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布扶檐。 她就那樣靜靜地躺著,像睡著了一般胁艰。 火紅的嫁衣襯著肌膚如雪款筑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天腾么,我揣著相機與錄音奈梳,去河邊找鬼。 笑死解虱,一個胖子當著我的面吹牛攘须,可吹牛的內容都是我干的。 我是一名探鬼主播殴泰,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼于宙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了悍汛?” 一聲冷哼從身側響起捞魁,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎离咐,沒想到半個月后谱俭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年旺上,在試婚紗的時候發(fā)現(xiàn)自己被綠了瓶蚂。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡宣吱,死狀恐怖窃这,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情征候,我是刑警寧澤杭攻,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站疤坝,受9級特大地震影響兆解,放射性物質發(fā)生泄漏。R本人自食惡果不足惜跑揉,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一锅睛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧历谍,春花似錦现拒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至脱衙,卻和暖如春侥猬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背捐韩。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工退唠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人奥帘。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓铜邮,卻偏偏與公主長得像,于是被迫代替她去往敵國和親寨蹋。 傳聞我的和親對象是個殘疾皇子松蒜,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內容