Android秒级编译之 Freeline

1. Freeline

Freeline是蚂蚁金服旗下一站式理财平台蚂蚁聚宝团队在Android平台上的量身定做的一个基于动态替换的编译方案,稳定性方面:完善的基线对齐,进程级别异常隔离机制。性能方面:内部采用了类似Facebook的开源工具buck的多工程多任务并发思想, 并对代码及资源编译流程做了深入的性能优化。
优势:
1.真增量,构建过程快且增量包体积小,极大提升更改代码部署到手机速度,较Android studio2.0及 LayoutCast快3~5倍
2.跨平台Linux,mac,windows
3.全版本覆盖 2.x ~ 6.x版本均支持
4.部署流程简化,更改代码后,构建过程中,与手机建立了tcp长连接,一行命令即可完成增量部署,毋需到各自子bundle所在的目录构建完成后再进入portal/launcher进行打包再安装到手机的过程
5.事务支持,在开发过程引入的异常不会破坏工作空间
6.无缝支持mPass,解决了类似maven各个节点需merge合并等与常规开发流程不一致的问题
7.进程级别异常隔离,开发体验持续稳定

2. 使用

  1. Freeline运行依赖于python脚本,所以首先确保机器已经安装了python 2.7.x (Mac一般自带有)
//查看版本
python --version

python download

  1. 项目根目录build.gradle引入freeline插件
buildscript {
 repositories { 
    jcenter() 
}
 dependencies { 
    classpath 'com.antfortune.freeline:gradle:0.8.2' 
}
}
  1. 项目模块中build.gradle应用插件
apply plugin: 'com.antfortune.freeline'
android { 
...
}
  1. 初始化Freeline脚本 国内运行最好带上-Pmirror参数,不然巨慢
  • Windows[CMD]: gradlew initFreeline
  • Linux/Mac: ./gradlew initFreeline
gradlew initFreeline -Pmirror
//运行后可以看到会生成项目的配置信息
  1. 运行
  • 直接运行脚本
python freeline.py
  • 安装as插件直接运行,改个快捷键更直观方便
    Preferences → Plugins → Browse repositories → freeline 重启


    Freeline.jpg

    每次运行可以看到文件有改动后,才会重新刷新界面,效果还行,第一次略慢一些。

...
{
    "build_info": {
        "last_clean_build_time": 1479907170.3063471,
        "is_root_config_changed": false
    },
    "projects": {
        "app": {
            "src": [],
            "so": [],
            "assets": [],
            "libs": [],
            "res": [],
            "config": [],
            "cpp": [],
            "manifest": []
        }
    }
}
...

3. Freeline动态监控的文件情况

Java drawable, layout, etc. res/values native so
add
change
remove x -

4. 附录

  • Freeline Github
  • 对比介绍分析传送门

你可能感兴趣的:(Android秒级编译之 Freeline)