掌握Freeline,打造Android开发新速度!
项目介绍
Freeline是一款专为Android平台设计的秒级编译解决方案,是Instant Run的强大竞争者。这个项目源自蚂蚁聚宝的Android团队,旨在显著提高开发者的日常工作效率,将原本冗长的编译和安装时间缩短至几秒钟,让你有更多时间去品味一杯香浓的咖啡。
项目技术分析
Freeline采用了一系列创新技术,包括:
- 多模块并发编译:根据模块间依赖关系,智能分配并行编译任务,提高整体效率。
- 高效缓存利用:充分挖掘编译缓存,实现真正的增量编译。
- dx和DexMerger优化:汲取buck的部分组件,提升构建速度。
- Socket Server:app运行时启用独立进程,保证通信稳定性,即使app崩溃也能继续增量编译。
- 增量资源处理:针对Java代码、资源文件等,采用multi-dex和资源替换策略,实现快速更新。
应用场景
Freeline不仅适用于日常开发的快速迭代,还能用于:
- A/B测试:快速上线不同版本,收集反馈数据。
- 线上热修复:通过增量资源推送,实现应用的问题修复或资源更新,且增量包通常小于100kb,可在移动网络下接收。
项目特点
- 全面兼容:支持标准的多模块Gradle工程,Windows、Linux和Mac三大操作系统。
- 并行编译:并发执行任务,大大提高编译速度。
- 异常隔离:进程级别的异常处理,保障系统稳定。
- 资源和so动态更新:覆盖多种类型资源和Native库的增量更新。
- 广泛兼容:适配retrolambda、DataBinding等多种流行框架。
使用方法
要体验Freeline带来的效率提升,只需简单几步:
- 在project-level的
build.gradle
中添加Freeline Gradle插件依赖。 - 主module的
build.gradle
应用插件。 - 下载Python和二进制依赖(使用
gradlew initFreeline
或gradlew initFreeline -Pmirror
)。
有了Android Studio插件,更可一键运行,尽享便捷。此外,也可以通过Python脚本来控制Freeline(查看Freeline CLI Usage了解详情)。
示例项目
git clone git@github.com:alibaba/freeline.git
cd freeline/sample
./gradlew initFreeline
python freeline.py
更进一步
- 提升兼容性和稳定性。
- 未来计划支持多设备同步开发。
注意事项与限制
- 初次增量资源编译可能稍慢。
- 删除带id的资源、抽象类、Kotlin/Groovy/Scala等暂不受支持。
加入我们
欢迎贡献代码,一起完善Freeline!
遇到问题?
查阅常见问题解答。
致谢
感谢Instant Run、Buck和LayoutCast的启发。
许可证
Freeline遵循BSD3许可。
快来拥抱Freeline,让代码更新再无等待!