以下是我這個系列的相關(guān)文章,有興趣可以參考一下嗡害,可以給個喜歡或者關(guān)注我的文章妈橄。
[Android]如何做一個崩潰率少于千分之三噶應(yīng)用app--章節(jié)列表
我建立了一個關(guān)于Android架構(gòu)學(xué)習(xí)的群,里面可以進(jìn)一步進(jìn)行組件化學(xué)習(xí)的交流鼻吮。
群號是316556016车吹,也可以掃碼進(jìn)群筹裕。我在這里期待你們的加入!U浴朝卒!
如果大家有關(guān)注我,看到我這系列第三和第四篇文章的話乐埠,會看到我介紹的FaceBook的Buck編譯扎运,Buck編譯是可以加速首次編譯和之后的增量編譯的。
但是近來我又發(fā)現(xiàn)饮戳,一種新的增量編譯速度比instance run縮短了5倍以上,就系阿里開發(fā)的Freeline洞拨。
FreeLine真正的優(yōu)勢在于
1.真增量扯罐,構(gòu)建過程快且增量包體積小,極大提升更改代碼部署到手機(jī)速度烦衣,較Android studio2.0及 LayoutCast快3~5倍
2.跨平臺Linux歹河,mac掩浙,windows
3.全版本覆蓋 2.x ~ 6.x版本均支持
4.部署流程簡化,更改代碼后秸歧,構(gòu)建過程中厨姚,與手機(jī)建立了tcp長連接,一行命令即可完成增量部署键菱,毋需到各自子bundle所在的目錄構(gòu)建完成后再進(jìn)入portal/launcher進(jìn)行打包再安裝到手機(jī)的過程
5.事務(wù)支持谬墙,在開發(fā)過程引入的異常不會破壞工作空間
6.無縫支持mPass,解決了類似maven各個節(jié)點(diǎn)需merge合并等與常規(guī)開發(fā)流程不一致的問題
7.進(jìn)程級別異常隔離,開發(fā)體驗(yàn)持續(xù)穩(wěn)定
支持增量編譯的范圍
配置方式
1.工程主build.gradle添加
2.需要編譯的項(xiàng)目的build.gradle里添加依賴
3.需要運(yùn)行./gradlew initFreeline -Pmirror的命令
4.Application 的onCreate的代碼需要添加 FreelineCore.init(this);
5.(1)可以添加android studio的插件在
Preferences → Plugins → Browse搜索freeline
? ?(2)可以使用命令行運(yùn)行
./gradlew initFreeline
python freeline.py
這里是躺過的一些坑
1.這是基于Python編寫的经备,所以只能運(yùn)行于舊版本,例如2.7版本的python侵蒙,新版本運(yùn)行的時候會提示運(yùn)行失敗的造虎。所以安裝3.5版本的,可以再安裝一個舊版本纷闺,然后配置環(huán)境變量
2.如果是使用MultiDex的話算凿,需要在Application的attachBaseContext函數(shù)里面,super之后立刻添加MultiDex.install的函數(shù)犁功,這樣會絕大的減少class not found 的情況
3.Xml注釋的時候不能出現(xiàn)例如<!-- /***? abc? ***/--> 這樣的注釋(里面/** **/的注釋號是多余的氓轰,要去掉),否則會運(yùn)行出錯波桩。
4.Freeline編譯只能增快增量編譯戒努,如果手機(jī)已經(jīng)安裝了原來的應(yīng)用,需要安裝一次Freeline編譯的應(yīng)用(第一次編譯的時間是gradle編譯的正常速度)镐躲,不然之后用Freeline編譯的增量編譯會是無效的储玫。
使用體驗(yàn)后,相比于Buck萤皂,F(xiàn)reeline不需要過多修改原有的的代碼(Buck里面如果充斥著switch case的語句將會是噩夢)撒穷,增量編譯的速度也比Buck快,所以只需要忍受第一次編譯比較緩慢裆熙。
想要了解相關(guān)的原理和分析端礼,還是進(jìn)入官網(wǎng)的介紹Freeline詳細(xì)原理介紹
如果試用后出現(xiàn)特別的問題,歡迎一起討論
*2016.11.14更新
發(fā)現(xiàn)如果創(chuàng)建布局入录,還有同時修改代碼蛤奥,有可能編譯fail
這時候最好使用./gradlew initFreeline -f這個命令,重新全編一次是否還有問題僚稿。
*2016.11.25更新
在freeline.py文件里面凡桥,可以看到freeline的各種命令,只要加入這些后綴就可以運(yùn)行了蚀同。(例如python freeline.py -f)
意思英文也解析得很清楚缅刽,這里就不作進(jìn)一步解析啦啊掏。
*2017.1.4更新
有人反饋遇到這樣的問題,編譯不過
將這個換成22就可以編譯通過了衰猛。
*2019.2.13
freeline現(xiàn)在已經(jīng)不更新了迟蜜,說一下現(xiàn)在的一些瓶頸問題
1.freeline不支持大部分的編譯時注解工具,只支持databinding和dagger啡省,在現(xiàn)在很多工程都使用編譯時注解工具的情況將會如雞肋娜睛。編譯時注解如果沒檢測緩存的情況下會一直要求全編的,很影響編譯速度冕杠。
2.freeline不支持kotlin編譯微姊,可以試著自己適配,網(wǎng)上有參考的文章分预。