atlas
来源:互联网 发布:linuxrar解压软件下载 编辑:程序博客网 时间:2024/05/21 18:49
Atlas
- Atlas
- Atlas是什么
- 为什么要用Atlas
- 如何使用Atlas
- 研究Demo
- 下载工程
- 导入工程
- 研究Demo源码
- 1 跑起来
- 2 功能的代码使用
- 插件化开发
- 动态更新
- 单Bundle调试
- Demo源码分析
- 研究Demo
- 补充阅读及引用资料
Atlas是什么?
结构简明的容器框架。
官网宣称其为动态组件化(Dynamic Bundle)框架,其简介中称可以并行迭代,灵活发布、动态更新。
为什么要用Atlas
如其官网所说。化繁为简,稳中有快,云端部署。
简而言之,即三点:
- 并行迭代
- 插件化开发
- 动态更新
本文的目的在于将Atlas的使用和相关具体知识,尽量以朴实和贴合实际的语言,用能够落地的方式来叙述阐明。
如何使用Atlas
研究Demo
1.下载工程
我们去下载Atlas’s Demo
2.导入工程
Demo工程位置:/你的下载目录/atlas-master/atlas-demo/AtlasDemo
3.研究Demo源码
3.1 跑起来
其Demo源码项目的README中这样写道:
Atlas Demo已经具备了一个小型app的基本框架,本demo中主要展示了Atlas的主客户端、业务bundle、业务bundle独有library、中间件library、远程bundle、公共bundle、闪屏等特性。
正准备build,我们发现其build报错
按照提示将我们的instant run关闭掉。
Clean后再次Build,已经能成功跑起Demo了。如下图。
其中动态部署模拟、远程组件模拟、单模块调试模拟应该就是对应其宣称三大功能动态更新、插件化开发及并行迭代了。
3.2 功能的代码使用
目录结构:
- app目录:主客户端代码
- firstbundle目录:第一个业务bundle代码
- secondbundle目录:第二个业务bundle代码
- secondbundlelibrary目录:第二个业务bundle单独依赖的library代码
- remotebundle目录:远程bundle代码(远程bundle在APK发布时不会编译进APK内,而是在客户端使用时下载后加载)
- publicbundle目录:公共bundle代码(不会打入主dex)
- middlewarelibrary目录:中间件library(会打入主dex)
- splashscreen目录:闪屏代码
- lottie目录:splahscreen的依赖代码
- activitygroupcompat目录:实现展示bundle 内的Fragment,因为bundle只通过Component的方式可以被依赖安装
其依赖关系如下:
三大功能,个人相对关心的是插件化开发,不过既然Atlas三者皆有,我们姑且都看看吧。
插件化开发
我们按图索骥,一步步来实现插件化开发。
1.我们在Demo中app的build.gradle添加远程bundle的依赖,如下图:
bundleCompile project(':remotebundle')
2.声明远程bundle列表
atlas { tBuildConfig { outOfApkBundles = ['remotebundle']
3.构建完整包,在app目录下执行
../gradlew clean assembleDebug publish
4.将远程so下载到你的设备上(主动下载和被动推送都可以),这里直接在PC上执行
adb push app/build/outputs/remote-bundles-debug/libcom_taobao_remotebunle.so /sdcard/Android/data/com.taobao.demo/cache/libcom_taobao_remotebunle.so
我们再次跑Demo,点击远程加载Bundle
我们能看到已经能正确的加载远程Bundle的Activity了。
动态更新
打pathc的构建步骤:
1.各个业务bundle可以根据业务需求修改更新各自的bundle
2.app工程目录下执行
../gradlew clean assembleDebug -DapVersion=apVersion - DversionName=newVersion
apVersion为之前打的完整APK的版本
newVersion为此次动态部署要生成的新版本号。
ex: “主APk构建”的APK版本是1.0.0,然后简单更新firstbundle的string.xml里面的hello_blank_fragment属性为”这是第一个bundle的界面”。
然后执行
../gradlew clean assembleDebug -DapVersion=1.0.0 -DversionName=1.0.1
检查是app下否存在目录build/output/tpatch-debug
我们将patch文件传入手机,此处可以下载或者直接adb push进去。
紧接着,我们来打开demo,点击动态部署页面的红色按钮。等待数秒app会关闭,说明动态部署已经成功,重启App后发现自己改动的代码已经成功。
原文Demo中提到其优势。
动态部署的主要优势:摆脱版本迭代周期限制,新增需求灵活发布;降低版本频繁发布给用户带来困扰;发现问题及时回滚;短时间内更高的覆盖率
单Bundle调试
1.在设备上安装App,设备ADB连接成功。
2.修改一个bundle工程代码或者资源(设置生效的标识),例如我们这里的firstbundle中的FirstBundleActivity的onCreate中加一个Toast提示。如下。
3.在我们改动的这个bundle工程目录下执行
../gradlew clean assemblePatchDebug
4.重启应用即可看到效果:
Demo源码分析
通过以上的试用,见证了奇迹以后,我们来看看和简单分析一下Demo源码的相关实现。
补充阅读及引用资料
从零开始的Android新项目11 - 组件化实践
Atlas:手淘Native容器化框架和思考
手淘组件化框架的前世今生和未来的路
Atlas官网
源码
- Atlas
- atlas
- Atlas
- atlas
- Atlas
- atlas学习
- 什么是“Atlas”
- Atlas 组成
- Atlas 概述
- Atlas是什么?
- Atlas简介
- atlas tutorial
- 测试atlas
- Atlas 、cobar
- atlas注意事项
- 使用atlas
- atlas使用
- Atlas 学习笔记: ajax 改进 by Atlas
- MATLAB图像处理的特征提取1.图像的边缘检测2.角点特征检测3.SURF特征提取检测
- centos7 U盘启动最好解决方案
- webview 清除缓存
- 搜索-洛谷P1074 靶形数独
- 第五届蓝桥杯A组java—斐波那契
- atlas
- jQuery过滤选择器
- lua 表达式及语句
- Jquery+Ajax+jquery.validate插件搞定完整的注册页面
- SELinux入门:模式查看与切换
- 并发编程--原子类AtomicLong、AtomicBoolean和AtomicReference
- 【redis】主从复制
- SSL设置免密登录
- JavaWeb(6)-Maven Setup and Quick Use