Atlas Demo 工程介绍 | 学习笔记

简介: 简介:快速学习 Atlas Demo工程介绍

开发者学堂课程【开源 Android 容器化框架 Atlas 开发者指南: Atlas Demo 工程介绍】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/392/detail/5019


Atlas Demo 工程介绍

 

Demo 工程包含了 atlas 大部分的功能,使用方式和情况。


Atlas Demo 介绍

⒈bundle、awb、host 的介绍。

(1)bundle 类似于 OSGI 规范里面的 bundle 的概念。每个 bundle 有自己的 class loader 与其他 bundle 相隔离。

同时,atlas 框架下的 bundle 有自身的资源段,也就是 package ID ,这个是在打包时 aapt 制定的。通过资源段的自定义,解决了 bundle 与宿主资源冲突的问题。

另外,原有 OSGI 所定义的 service 格式不同之处,是 atlas 里面 bundle 透出所有定义在 manifest 里面的 component 。随着 service activity 的出发进行 bundle 的安装和运行。

(2)Awb android wear less bundle 的缩写,实际上同 AAR 类似,是最终构建整包前的中间产物,那个 AWB 会最终达成一个 bundle。Awb 与 AAR 唯一的不同之处是 awb 与之对应有个 packageID 的定义,也就是前面所提到的资源分段,他们将以 so 文件的格式放在 apk 的 Lab 文件夹下。

(3)Host 宿主的概念,所有的 bundle 可以直接调用 host 内的代码和资源,所以 host 常常集合了公共的中间件 UI 的资源。

⒉工程介绍

打开 demo 工程,给大家介绍一下工程中每个模块的作用。

使用的是 master 分支,

目录下的 settings gradle 文件

image.png

里面标明了 demo 项目是由哪些模块组成的。

project 的目录

image.png

Activity group compact 目录。可以把这个模块儿当做 atlas 框架,在 demo 项目中的工具类,负责启动 activity 。 APP 目录。主客户端的代码。

Data bind bundle。使用谷歌 datebind 框架的 bundle。 Firstbundle。

第一个业务 bundle 的代码。 lottie。这个目录是 splash screen 依赖的代码,这个项目是一个开源的项目,是根据真实文件来展示动画效果的开源库。

Middle ware library 中间键 library 这个是会达到主 dex 中的 AR 。 Public bundle 这是公共 bundle 的代码,这个是不会打入主 dex 的。 Remote bundle 目录。是远程 bundle 的代码。

远程 bundle 在 APK 发布时不会变异为 APK 内。而是在客户端使用时,先下载后加载。 second bundle 。第二个业务的 bundle 代码。Second bundle library 目录。这是第二个业务 bundle 单独依赖的 library 代码。 splash screen 是闪屏的代码。

⒊demo 中 atlas 的配置

Atlasdemo 工程的配置跟 atlas 相关的配置。一个应用要借助 atlas ,需要哪些配置呢?

配置非常简单,这里对照 demo 工程看一下。

首先看根目录下的 build.gradle 文件,

image.png

可以看到在 build script 的依赖里面。我们增加了一项 atlasplugin 的依赖。

这是负责构建 atlas 应用的插件。然后打开 APP 下的 build.gradle 文件。

image.png

我们用一个名字叫做 come.taobao.atlas 插件。

如果不清楚如何开发 gradle 插件的,可以看前面基础知识介绍,关于如何自定义插件的文章。

然后 dependencies 依赖里面有两个跟 atlas 相关的依赖,第一个是 atlascore 。atlas 运行的核心库,第二个是 atlas Update 是负责 atlas 框架下应用的更新,增量 patch 的代码,资源合并等更新功能相关的库。

这样,atlas 框架就引入到我们的工程里了。引入后我们需要进行一些配置。

gradle 文件中 atlas 相关配置项目。

image.png

atlas Enabled 这是 atlas 的开关,一般接入后这个都要打开。tBuildConfig 看这个里面的配置。

auto start bundles 也就是说跟随应用启动而进行安装下载。普通的 bundle 是要在运行的时候才进行,加载。

比如说你打开一个页面,那么这个页面的 bundles 会在你打开的时候先进行安装在加载的。

Out of a pk bundles 是打包时不打到包中的 bundle ,也就是远程 bundle,这里面需要配置的是 bundle 的 Artifact ID 。prelaunch 要实现 atlas prelauncher 里面的 innit before atlas 方法,只需要在atlas框架启动前进行启动的功能。比如崩溃信息的统计,就需要在 atlas 框架前启动,这样关于 atlas 框架的崩溃才会统计。另外注意所有在 atlas 启动前启动的功能是不能够被动态部署的。

manifest options 是指 manifest 的一些配置项,后面给出个配置的列表。patchconfigs 是指动态部署的一开始的相关配置。这里配置的 createTpatch 表示功能开启。

baseAPdependency 基线版本的坐标,后面我会说明如何发布基线版本。atlas 的配置就介绍到这里。下面我看一下依赖的写法。大家注意这个 bundlecompile 的写法,

image.png 

这样引入的依赖会把它当做一个 bundle ,打包的时候会打入到 apk 的 lab 下,也就是我们的插件了。

APP 中关于 atlas 配置的部分就说明完了。bundle 工程应该如何配置。以 firstbundle 为例。打开 build.gradle 文件,

image.png

同样我们应用 com.Taobao.atlas 的一个插件。

看 atlas 的配置相。其中重要的一个就是 awb bundle true 标明这是个 bundle 工程,产物会生成 awb 文件,也就是最后打入包中的 so 文件。

baseapfile 前面已经介绍过了,是基线版本的位置。我们看一下 bundle 工程依赖部分的写法。这里有一个 provided compile。

image.png

这个 provided compile 相当于普通应用中的 PROVIDED 依赖写法。依赖编译,但不会打入包中,只是 provided compile 也支持了 AAR 的格式。

相关文章
|
关系型数据库 MySQL 网络安全
MySQL主从复制之多主多从部署流程—2023.04
MySQL主从复制之多主多从部署流程—2023.04
1481 0
|
5月前
|
JSON 前端开发 API
京东商品详情 API 实战指南
京东商品详情API通过抓包分析前端异步请求,获取商品标题、价格、库存等核心信息,适用于电商数据分析与比价系统。本文详解接口逻辑、关键参数及Python实现,并强调反爬策略与合规性,助力开发者安全高效采集数据。(238字)
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
教育领域的AI进展:智能辅导与个性化学习的技术革新与挑战
随着人工智能技术的发展,AI Agent在教育领域的应用日益广泛,特别是在智能辅导与个性化学习方面展现出巨大潜力。通过自然语言处理、机器学习和数据分析等技术,AI可模拟个性化辅导员,根据学生的学习情况提供定制化资源与实时反馈。未来,AI Agent将更注重情感分析与跨学科培养,成为教师的有力助手,推动教育公平与效率提升。然而,数据隐私、个体差异及教育资源不平衡等问题仍需克服,以实现更智能化、全面化的教育生态。
909 10
教育领域的AI进展:智能辅导与个性化学习的技术革新与挑战
|
Linux 虚拟化 Docker
Linux服务器部署docker windows
在当今软件开发中,Docker成为流行的虚拟化技术,支持在Linux服务器上运行Windows容器。流程包括:1) 安装Docker;2) 配置支持Windows容器;3) 获取Windows镜像;4) 运行Windows容器;5) 验证容器状态。通过这些步骤,你可以在Linux环境中顺利部署和管理Windows应用,提高开发和运维效率。
2370 1
|
数据采集 存储 安全
Pandas数据类型转换:astype与to_numeric
在数据分析中,Pandas的`astype`和`to_numeric`是两种常用的数据类型转换方法。`astype`可将DataFrame或Series中的数据转换为指定类型,支持单一列或多列转换;常见问题包括无效字面量和精度丢失。`to_numeric`主要用于字符串转数值,容错能力强,能自动识别缺失值并优化内存占用。掌握这两种方法及其错误处理技巧,可提高数据分析的效率与准确性。
1129 23
|
安全 Java 数据库
后端进阶之路——浅谈Spring Security用户、角色、权限和访问规则(三)
后端进阶之路——浅谈Spring Security用户、角色、权限和访问规则(三)
|
JavaScript
threeJs通过GUI实现动态对模型的控制
这篇文章讲述了如何使用three.js结合GUI工具实现实时控制3D模型的属性,以便于在开发过程中动态调整和预览模型效果。
466 2
threeJs通过GUI实现动态对模型的控制
|
算法 测试技术
模块化设计具体应该怎么做呢
【10月更文挑战第22天】模块化设计具体应该怎么做呢
|
JavaScript
基于Vue2.X对WangEditor 5富文本编辑器进行封装与使用,支持单个或多个图片点击、粘贴、拖拽上传,Vue3.X项目也可直接使用
这篇文章介绍了如何在Vue 2.X项目中封装和使用WangEditor 5富文本编辑器,支持图片的点击、粘贴和拖拽上传,同时提到封装的组件也适用于Vue 3.X项目,并提供了详细的使用示例和后端配置。
2287 1
基于Vue2.X对WangEditor 5富文本编辑器进行封装与使用,支持单个或多个图片点击、粘贴、拖拽上传,Vue3.X项目也可直接使用
|
分布式计算 Spark 大数据
深入探究Apache Spark在大数据处理中的实践应用
【6月更文挑战第2天】Apache Spark是流行的开源大数据处理框架,以其内存计算速度和低延迟脱颖而出。本文涵盖Spark概述、核心组件(包括Spark Core、SQL、Streaming和MLlib)及其在数据预处理、批处理分析、交互式查询、实时处理和机器学习中的应用。通过理解Spark内部机制和实践应用,可提升大数据处理效率,发挥其在各行业的潜力。

热门文章

最新文章