Atlas Browse this in English
Atlas是伴随着手机淘宝的不断发展而衍生出来的一个运行于Android系统上的一个容器化框架,我们也叫动态组件化(Dynamic Bundle)框架。它主要提供了解耦化、组件化、动态性的支持。覆盖了工程师的工程编码期、Apk运行期以及后续运维期的各种问题。
Atlas对app的划分如下图所示:
周期 | 说明 |
---|---|
工程期 | 实现host、bundle独立开发、调试的功能,bundle独立 |
运行期 | 实现完整的组件生命周期的映射,类隔离、资源共享等机制 |
运维期 | 增量更新修复能力,提供对class、so以及资源的增量更新修复能力,快速升级 |
以一个app的开发的生命周期为例,参见
提供gradle插件,简化开发者接入的负担。
需要说明的是,gradle插件不会侵入正常的开发流程,host和bundle都可以独立的进行开发和调试。
功能 | 说明 |
---|---|
四大组件支持 | 支持运行bundle中的四大组件 |
共享代码资源 | bundle可以直接使用host中的代码和资源 |
bundle按需加载 | 业务需要时,才会去加载对应bundle中的代码和资源 |
远程bundle | 减少包体积。不常用的bundle放在云端,需要时按需下载。当用户设备空间紧张时,可以清理掉一些长期不用的组件 |
解释执行 | 为了降低用户等待时间,Atlas框架在dalivk系统上首次使用bundle时关闭了verify,在ART系统上首次使用时关闭了dex2oat走解释执行。同时后台通过异步任务走原生的dexopt过程,为下次使用做好准备 |
动态部署 是容器一个最重要的功能。基于此:
- 业务可以灵活发布自己的需求
- 有故障的业务可以及时修复或者回滚
- 同时动态部署的快速覆盖能力在灰度等场景下可以更快地收到所需的效果。
- gradle:用于配置主apk的依赖及控制构建参数
以 demo 为例
引用Atlas插件及依赖仓库,修改工程gradle文件
bundle接入,修改bundle的gradle,参见中的firstbundle配置
容器接入,修改app模块的gradle文件
支持版本 4.0 to 7.0.
Runtime | Android Version | Support |
---|---|---|
Dalvik | 2.2 | Not Test |
Dalvik | 2.3 | Not Test |
Dalvik | 3.0 | Not Test |
Dalvik | 4.0-4.4 | Yes |
ART | 5.0 | Yes |
ART | 5.1 | Yes |
ART | M | Yes |
ART | N | Yes |