[14]——百分百成功的集成Freeline來提升編譯速度

轉(zhuǎn)載請標(biāo)明出處:http://www.reibang.com/p/e1772bfa9a96

image

引言

作為一名 Androider 你應(yīng)該也曾被 AS 那緩慢的編譯速度所折磨 把夸,更為可怕的是即使你只是簡單的修改了幾行代碼映屋,修改了幾個布局文件,當(dāng)你再次運(yùn)行的時候還是需要再次進(jìn)行:「編譯項(xiàng)目」—「安裝 APK 到手機(jī)」篡诽。這兩個步驟在我這臺機(jī)器上,快則 4、5 分鐘,慢則需要 10 多分鐘撵渡,調(diào)試過程異常痛苦!

Google 推出過加快編譯速度的解決方案 「Instant Run」死嗦,但是用過的朋友應(yīng)該都知道趋距,這個功能很多時候存在這一些神奇的 BUG,或者是無法應(yīng)用的情況越除,而且速度提升有限节腐。

還有一個比較不錯的且簡單易用的插件,名為 「JRebel for Android」摘盆,這個插件的功能十分強(qiáng)大翼雀,編譯速度也很快,但是這個插件是付費(fèi)插件孩擂。

今天我們要介紹的主角是「Freeline」锅纺,這是阿里巴巴螞蟻金服旗下的幾位工程師推出的 Android 平臺下的秒級編譯方案,Github 地址為:https://github.com/alibaba/freeline肋殴。功能十分強(qiáng)大囤锉,在第一次全量編譯之后,每次啟動從編譯到部署到手機(jī)全程用時都在數(shù)秒之內(nèi)护锤!可以大大提高開發(fā)調(diào)試的速度與效率官地!

使用

「Freeline」 推薦的方式為直接安裝 Android Studio 插件來使用,但是在實(shí)際使用過程中烙懦,可能會出現(xiàn)無法下載「Freeline」 的二進(jìn)制依賴驱入,而導(dǎo)致使用失敗,使用 Gradle 命令行指令也會存在同樣的問題氯析。因此我推薦大家按照我下面的步驟來進(jìn)行亏较,可以確保萬無一失!

準(zhǔn)備工作

對于 Windows 用戶來說掩缓,你需要提前安裝 Python 2.7+(Freeline 暫時還不支持 Python 3+)雪情,安裝完之后需要重啟一下 Android Studio。

對于 Linux/Mac 用戶你辣,如果你已經(jīng)安裝了 Python 3+巡通,推薦你將其 alias 設(shè)為 python3,再單獨(dú)安裝 Python 2.7+舍哄,并作為默認(rèn)的 Python 指令宴凉,避免與 Android Studio 插件自動運(yùn)行的 python 命令沖突,導(dǎo)致無法正常使用插件表悬。

步驟一:安裝 Android Studio 插件

使用插件可以自動的幫我們在項(xiàng)目 build.gradle 文件中添加各種依賴弥锄,從而省去了我們自己修改 build.gradle 文件的步驟。


安裝 Freeline 插件

點(diǎn)擊運(yùn)行 Freeline,在第一次運(yùn)行插件時籽暇,會有如下提示:


提示是否自動初始化

大致意思是:檢測到我們的項(xiàng)目沒有初始化 Freeline温治,是否自動安裝 Freeline?

我們點(diǎn)擊 Install Freeline Automatically 图仓,然后選擇同步 build.gradle 文件罐盔。

再次點(diǎn)擊運(yùn)行 Freeline,來編譯項(xiàng)目并部署到手機(jī)救崔,這時如果出現(xiàn)了如下圖的錯誤惶看,不要驚慌,請按照接下來的步驟進(jìn)行

提示執(zhí)行 Gradle task

步驟二:運(yùn)行 Gradle task : initFreeline

根據(jù)提示內(nèi)容「執(zhí)行 initFreeline 任務(wù)并下在依賴」六孵,我們點(diǎn)開右側(cè)邊欄的 Gradle 選項(xiàng)卡纬黎,選擇執(zhí)行:「Application」—「Application」—「Tasks」—「other」—「initFreeline」

具體位置

這時如果你能成功執(zhí)行完畢,那么恭喜你劫窒,You are a lucky dog本今!

相信絕多數(shù)的小伙伴都是卡在無比漫長的下載過程中了,如下圖所示:

無比漫長的下載過程

參考 Freeline 的手冊可以看到主巍,官方有考慮到這個問題冠息,并且提供了我們其他的解決方法,比如使用 Gradle 指令:gradlew initFreeline -Pmirror 來將下載指向國內(nèi)的鏡像網(wǎng)站孕索。

注意如果在 Linux/Mac 環(huán)境下需要使用指令 ./gradlew initFreeline -Pmirror 逛艰,否則你可能會出現(xiàn)如下提示 gradlew: 未找到命令

這時如果你能成功執(zhí)行完畢搞旭,那么恭喜你散怖,You are a lucky dog!

如果你的執(zhí)行結(jié)果如下圖:


手動初始化失敗

那么恭喜你肄渗,請繼續(xù)收看步驟三镇眷。

步驟三:手動下載 Freeline 依賴并初始化

使用任何加載工具下載如下鏈接:http://static.freelinebuild.com/freeline/0.8.6/all/freeline.zip

請注意版本,本文使用的是 0.8.6 版本翎嫡,請根據(jù)你使用的版本來調(diào)整下載鏈接欠动。

下載完畢后,講該文件保存在一個好記的位置钝的,因?yàn)樯院笠斎朐撐募奈恢谩?/p>

在 Terminal 中使用指令 ./gradlew initfreeline -PfreelineLocal="/home/junerver/Freeline/freeline.zip" 來使用本地依賴來進(jìn)行初始化(博主使用的是 Debian 8.7.1翁垂,如果使用的是 Windows 系統(tǒng)請去掉 ./)。

使用本地依賴進(jìn)行初始化成功

恭喜你硝桩,執(zhí)行到這一步,我們就已經(jīng)成功的在項(xiàng)目中集成了 Freeline枚荣。

步驟四:運(yùn)行插件使用 Freeline

這個步驟就是最終一步了碗脊,我們再次點(diǎn)擊 Freeline 插件的圖標(biāo)來運(yùn)行 Freeline,注意第一次運(yùn)行的時候會進(jìn)行一次全量編譯,再之后的運(yùn)行都是增量編譯衙伶,如下圖所示:

第一次全量編譯

由于是一個空的項(xiàng)目祈坠,所以第一次運(yùn)行一共用了 28.8 秒,我們來隨便的修改一下布局文件矢劲,然后再次運(yùn)行 Freeline 看一下時間:

增量編譯耗時極短

從編譯到部署到手機(jī)一共只用了 0.7 秒赦拘,可以看到這個提速效果真的是非常的明顯。

一些補(bǔ)充

局限

看了上面的文章芬沉,你會感嘆 Freeline 的強(qiáng)大躺同,但它也還是有一些不足之處的,比如:僅支持 Java 語言丸逸,對其他的基于 JVM 語言(如 Kotlin)不支持蹋艺;不支持刪除帶id的資源,否則可能導(dǎo)致aapt編譯出錯黄刚;不支持開啟 Jack 編譯等等捎谨,但是總體看來還是瑕不掩瑜的。

一些有用的命令行指令

大多數(shù)情況下我們使用插件就可以解決問題憔维,但有時也會出現(xiàn)一些奇怪的 BUG涛救,這時候你可能會需要用到一下的一個 Gradle 指令:

Gradle Task: checkBeforeCleanBuild
主要用于生成工程描述文件,每次 freeline 全量編譯前會先執(zhí)行一下這個任務(wù)业扒。當(dāng)你執(zhí)行 python 命令提示報(bào)錯的時候:freeline_core.exceptions.NoConfigFoundException: xxxxxx/project_description.json not found, please execute gradlew checkBeforeCleanBuild first.检吆,也需要先執(zhí)行一下./gradlew checkBeforeCleanBuild

freeline.py

使用 freeline 進(jìn)行編譯的主要入口凶赁,freeline 主要通過 python 來實(shí)現(xiàn)跨平臺咧栗。

參數(shù):

-h
    使用方式:python freeline.py -h
    參數(shù)說明:輸出 freeline 的參數(shù)使用說明
-v
    使用方式:python freeline.py -v
    參數(shù)說明:獲取 freeline.py 的版本號
-f
    使用方式:python freeline.py -f
    參數(shù)說明:強(qiáng)制進(jìn)行全量編譯
-d
    使用方式:python freeline.py -d(注:可與各類參數(shù)疊加使用)
    參數(shù)說明:輸出 freeline 的調(diào)試日志(注意:不是對 Android 工程進(jìn)行調(diào)試)
-w
    使用方式:python freeline.py -f -w
    參數(shù)說明:讓應(yīng)用啟動的時候等待調(diào)試工具連接(目前只支持全量編譯的時候配合使用),日常調(diào)試推薦直接使用 Android Studio 的attach debugger to Android process

一個報(bào)錯 - 2018.4.23

最近在一個新項(xiàng)目上使用了 Freeline 虱肄,完成 Freeline 的依賴之后致板,在運(yùn)行 python freeline.py 時出現(xiàn)錯誤。報(bào)錯內(nèi)容為:

/usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts (沒有那個文件或目錄)

進(jìn)入該文件夾發(fā)現(xiàn)存在該文件咏窿,但雙擊該文件提示 無法使用此鏈接斟或,因?yàn)槠淠繕?biāo)“/etc/ssl/certs/java/cacerts”不存在。

解決方法是:
在終端運(yùn)行指令 apt-get install ca-certificates-java

參考

感謝你的閱讀萝挤,如果可以對你有一些微小的幫助,請點(diǎn)擊喜歡+收藏根欧,轉(zhuǎn)載請標(biāo)明出處怜珍。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市凤粗,隨后出現(xiàn)的幾起案子酥泛,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柔袁,死亡現(xiàn)場離奇詭異呆躲,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)捶索,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門插掂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人腥例,你說我怎么就攤上這事辅甥。” “怎么了院崇?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵肆氓,是天一觀的道長。 經(jīng)常有香客問我底瓣,道長谢揪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任捐凭,我火速辦了婚禮拨扶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘茁肠。我一直安慰自己患民,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布垦梆。 她就那樣靜靜地躺著匹颤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪托猩。 梳的紋絲不亂的頭發(fā)上印蓖,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機(jī)與錄音京腥,去河邊找鬼赦肃。 笑死,一個胖子當(dāng)著我的面吹牛公浪,可吹牛的內(nèi)容都是我干的他宛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼欠气,長吁一口氣:“原來是場噩夢啊……” “哼厅各!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起预柒,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤讯检,失蹤者是張志新(化名)和其女友劉穎琐鲁,沒想到半個月后卫旱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體人灼,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年顾翼,在試婚紗的時候發(fā)現(xiàn)自己被綠了投放。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡适贸,死狀恐怖灸芳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情拜姿,我是刑警寧澤烙样,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站蕊肥,受9級特大地震影響谒获,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜壁却,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一批狱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧展东,春花似錦赔硫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至砸王,卻和暖如春推盛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背处硬。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工小槐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人荷辕。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓凿跳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親疮方。 傳聞我的和親對象是個殘疾皇子控嗜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容