什么是Freeline奔滑?
Freeline是由螞蟻聚寶Android團(tuán)隊(duì)開發(fā)的一款針對(duì)Android平臺(tái)的增量編譯工具酬土。它可以充分利用緩存文件璧坟,在幾秒鐘內(nèi)迅速地對(duì)代碼的改動(dòng)進(jìn)行編譯并部署到設(shè)備上嗡贺,有效地減少了日常開發(fā)中的大量重新編譯與安裝的耗時(shí)业舍。
怎么集成抖拦?
- 第一步:先下載Freeline開源項(xiàng)目代碼
freeline項(xiàng)目目錄.png
freeline工程主要分為三大模塊升酣,分別為:
runtime:這個(gè)模塊主要在java層執(zhí)行,主要的作用是在Application啟動(dòng)的時(shí)候重載ClassLoader态罪,插入dex拗踢,從而實(shí)現(xiàn)增量修改的目的。
freeline_code:python文件集合向臀,主要是掃描本地修改文件,執(zhí)行編譯壓縮傳輸文件等操作诸狭。
gardle工程:gradle插件工程券膀,主要實(shí)現(xiàn)下載freeline_code集合,更改打包步驟等操作驯遇。
-
第二步:將freeline工程下面的【runtime】拷貝到自己的項(xiàng)目目錄下或通過(guò)Android Studio的Import Module方式導(dǎo)入到自己(我的項(xiàng)目名為:FreelineDemo)的項(xiàng)目中
runtime目錄:
runtime目錄.png
自己的項(xiàng)目目錄
Sample目錄.png
我這里把Freeline工程中的common芹彬、pure_java、resources叉庐、ThirdParty等幾個(gè)Module都一起導(dǎo)進(jìn)來(lái)了
-
第三步:修改Sample目錄下的settings.gradle文件
settings.png -
第四步:配置project-level的build.gradle舒帮,加入freeline-gradle的依賴
sample_build.png 第五步:在你的主module的build.gradle中,應(yīng)用freeline插件的依賴陡叠,具體參考Freeline項(xiàng)目中的Sample項(xiàng)目中的配置
修改完成后當(dāng)點(diǎn)擊Sync Project with Gradle Files 時(shí)會(huì)報(bào)一個(gè)異常
Gradle 'Sample' project refresh failed
Error:Could not get unknown property 'FREELINE_RELEASE_VERSION' for project ':runtime:runtime' of type org.gradle.api.Project.因?yàn)槟氵€沒(méi)定義FREELINE_RELEASE_VERSION
第六步:在Sample目錄下找到gradle.properties文件并打開把FREELINE_RELEASE_VERSION=0.7.3.1 加上即可玩郊;0.7.3.1是Freeline中當(dāng)前版本號(hào),這時(shí)再點(diǎn)擊Sync Project with Gradle Files時(shí)就編譯通過(guò)了枉阵,但要使用Freeline快速編譯自己的項(xiàng)目還不夠
-
第七步:在項(xiàng)目中創(chuàng)建一個(gè)Application類译红,并在AndroidManifest.xml中application節(jié)點(diǎn)修改 android:name=".GLAPP",GLAPP即為你創(chuàng)建的Application類名
在onCreate()中添加FreelineCore.init(this);
app加入初始化freeline.png 第八步:在命令行執(zhí)行以下命令來(lái)下載 freeline 的 python 和二進(jìn)制依賴
Windows[CMD]: gradlew initFreeline
Linux/Mac: ./gradlew initFreeline
cd FreelineDemo/sample
./gradlew initFreeline -Pmirror
顯示 BUILD SUCCESSFUL 就是下載成功了
這時(shí)Sample目錄中就多了freeline.py文件和freeline文件夾兴溜,就可以使用python freeline.py
命令來(lái)編譯項(xiàng)目了
./gradlew -v 查看gradlew版本
如果使用./gradlew命令報(bào)permission denied: ./gradlew異常時(shí)使用chmod +x gradlew修改權(quán)限命令即可
python freeline.py -f 整個(gè)項(xiàng)目編譯運(yùn)行 python freeline.py 部分編譯運(yùn)行 python freeline.py -v 查看freeline版本