http://mp.weixin.qq.com/s?__biz=MzA4NTQwNDcyMA==&mid=2650662410&idx=1&sn=c654fa7b0cc8c91ae10e5d85c6a99f2d&chksm=87d13b55b0a6b243459bb28be86c64b76c5f2db518f7025fab4a50ca71444e8adb858bc65a8b&scene=0#rdpython
閱讀本文大概須要 6.66 分鐘。android
咱們知道 Android 的編譯很慢,尤爲是項目大點的時候,那編譯速度簡直難以忍受,極大的下降了咱們的開發效率,以前的文章「」給你們介紹過,可是是付費的,用起來不是那麼自由,而今天給你們介紹另一個強大的工具 -- Freeline,絕對秒級編譯。
git
GitHub:https://github.com/alibaba/freelinegithub
什麼是 Freeline?windows
Freeline 是螞蟻金服旗下平臺螞蟻聚寶 Android 團隊開發的一款針對 Android 平臺的增量編譯工具,它能夠充分利用緩存文件,在幾秒鐘內迅速地對代碼的改動進行編譯並部署到設備上,有效地減小了平常開發中的大量從新編譯與安裝的耗時,現已開源。緩存
穩定性方面:完善的基線對齊,進程級別異常隔離機制。併發
性能方面:內部採用了相似 Facebook 的開源工具 buck 的多工程多任務併發思想:端口掃描,代碼掃描,併發編譯,併發 dx,併發 merge dex 等策略,在多核機器上有明顯加速效果,另外在 class 及 dex,resources 層面做了相應緩存策略,作到真正增量開發,另外引入並優化 buck 的部分加速組件 dx,DexMerger,資源編譯方面,深刻改造了 Aapt 資源編譯流程,當資源發生改變時候,秒級完成增量包編譯,其中增量包僅含最小的變動集合(10Kb~數百Kb內),後期也被運用到線上進行資源/代碼動態替換。相比目前 instant-run,buck,layoutcast 等方案快數倍速度。app
有何優點?maven
1. 真增量,構建過程快且增量包體積小,極大提高更改代碼部署到手機速度,較 Android studio 2.0 及 LayoutCast 快 3~5 倍tcp
2. 跨平臺 Linux,mac,windows
3. 全版本覆蓋 2.x ~ 6.x版本均支持
4. 部署流程簡化,更改代碼後,構建過程當中,與手機創建了 tcp 長鏈接,一行命令便可完成增量部署,毋需到各自子 bundle 所在的目錄構建完成後再進入 portal/launcher 進行打包再安裝到手機的過程
5. 事務支持,在開發過程引入的異常不會破壞工做空間
6. 無縫支持 mPass,解決了相似 maven 各個節點需 merge 合併等與常規開發流程不一致的問題
7. 進程級別異常隔離,開發體驗持續穩定
支持的功能
支持標準的多模塊 Gradle 工程的增量構建
併發執行增量編譯任務
進程級別異常隔離機制
支持 so 動態更新
支持 resource.arsc 緩存
支持 retrolambda
支持 DataBinding
支持各種主流注解庫
支持 Windows,Linux,Mac 平臺
如何使用?
首先你的電腦上應該安裝 Python,若是沒有安裝,請自行搜索安裝,相信你能夠搞得定。
其次配置 project-level 的 build.gradle,加入 freeline-gradle 的依賴:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.antfortune.freeline:gradle:0.8.2'
}
}
而後,在你的主 module 的 build.gradle 中,通常也就是你 app 目錄下的 build.gradle 文件,應用 freeline 插件的依賴,記得點擊 Sync 按鈕進行同步下載。
apply plugin: 'com.antfortune.freeline'
android {
...
}
最後,在命令行執行如下命令來下載 freeline 的 python 和二進制依賴,注意切換到項目目錄執行:
Windows[CMD]: gradlew initFreeline
Linux/Mac: ./gradlew initFreeline
對於國內的用戶來講,若是你的下載的時候速度很慢,你也能夠加上參數,執行gradlew initFreeline -Pmirror,這樣就會從國內鏡像地址來下載。
下載完成以後,在命令行輸入 python freeline.py 便可進行編譯運行。
固然若是每次都輸入也挺麻煩的,最簡單的用法是直接安裝 Android Studio 插件。
在 Android Studio 中,經過如下路徑 Preferences → Plugins → Browse repositories,搜索「freeline」,並安裝,以後你會看到工具欄有以下按鈕:
直接點擊 Run Freeline 的按鈕,本質上也就是幫你在命令行輸入上述命令而已。
使用體驗
本身在項目上親自體驗了,綜合使用下來確實很爽,真正實現了秒級編譯,無論你是更改了代碼文件仍是資源文件,直接編譯運行真正是秒級的,而在以前可能得等上個一兩分鐘。可是使用下來有如下注意事項:
第一次增量資源編譯的時候有點慢,不過也就在第一次的時候慢,後面速度蹭蹭的;
若是設備上以前有安裝不是用 Freeline 編譯打包的 apk,請先卸載,以後再用 Freeline 編譯打包;
第一次 Freeline 編譯安裝以後不會自動啓動 App,這點請你們注意下,由於第一次我一直在等待,等了很久覺得沒成功,後來才發現其實安裝成功了的,只是沒有打開而已;
不支持多設備同時鏈接,也就是說不論是模擬器仍是真機,只容許同時一臺設備鏈接,不然會失敗;
不支持刪除帶 id 的資源,不然可能致使 aapt 編譯出錯;
若是你的項目有使用 Kotlin 語言,那麼 Freeline 不支持;
若是你的項目又想用 Freeline,又想使用 Gradle,記得執行 Gradle 腳本以前先執行 ./gradlew clean,不然會編譯失敗;
整體而已 Freeline 會有一些限制,以及兼容性可能也會有點問題,可是試用下來沒遇到多大的問題,並且對於調試的效率提高簡直太大了,值得推薦給你們!
PS: 想要更多的瞭解其原理,請參考如下官方詳細介紹。
https://github.com/alibaba/freeline/blob/master/README-zh.md
https://yq.aliyun.com/articles/59122