什么是Freeline?
Freeline是由蚂蚁聚宝Android团队开发的一款针对Android平台的增量编译工具。它可以充分利用缓存文件,在几秒钟内迅速地对代码的改动进行编译并部署到设备上,有效地减少了日常开发中的大量重新编译与安装的耗时。
怎么集成?
- 第一步:先下载Freeline开源项目代码
freeline工程主要分为三大模块,分别为:
runtime:这个模块主要在java层执行,主要的作用是在Application启动的时候重载ClassLoader,插入dex,从而实现增量修改的目的。
freeline_code:python文件集合,主要是扫描本地修改文件,执行编译压缩传输文件等操作。
gardle工程:gradle插件工程,主要实现下载freeline_code集合,更改打包步骤等操作。
-
第二步:将freeline工程下面的【runtime】拷贝到自己的项目目录下或通过Android Studio的Import Module方式导入到自己(我的项目名为:FreelineDemo)的项目中
runtime目录:
自己的项目目录
我这里把Freeline工程中的common、pure_java、resources、ThirdParty等几个Module都一起导进来了
-
第三步:修改Sample目录下的settings.gradle文件
-
第四步:配置project-level的build.gradle,加入freeline-gradle的依赖
第五步:在你的主module的build.gradle中,应用freeline插件的依赖,具体参考Freeline项目中的Sample项目中的配置
修改完成后当点击Sync Project with Gradle Files 时会报一个异常
Gradle 'Sample' project refresh failed
Error:Could not get unknown property 'FREELINE_RELEASE_VERSION' for project ':runtime:runtime' of type org.gradle.api.Project.因为你还没定义FREELINE_RELEASE_VERSION
第六步:在Sample目录下找到gradle.properties文件并打开把FREELINE_RELEASE_VERSION=0.7.3.1 加上即可;0.7.3.1是Freeline中当前版本号,这时再点击Sync Project with Gradle Files时就编译通过了,但要使用Freeline快速编译自己的项目还不够
-
第七步:在项目中创建一个Application类,并在AndroidManifest.xml中application节点修改 android:name=".GLAPP",GLAPP即为你创建的Application类名
在onCreate()中添加FreelineCore.init(this);
第八步:在命令行执行以下命令来下载 freeline 的 python 和二进制依赖
Windows[CMD]: gradlew initFreeline
Linux/Mac: ./gradlew initFreeline
cd FreelineDemo/sample
./gradlew initFreeline -Pmirror
显示 BUILD SUCCESSFUL 就是下载成功了
这时Sample目录中就多了freeline.py文件和freeline文件夹,就可以使用python freeline.py
命令来编译项目了
./gradlew -v 查看gradlew版本
如果使用./gradlew命令报permission denied: ./gradlew异常时使用chmod +x gradlew修改权限命令即可
python freeline.py -f 整个项目编译运行 python freeline.py 部分编译运行 python freeline.py -v 查看freeline版本