构建与基线发布 | 学习笔记

简介: 简介:快速学习构建与基线发布

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

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


构建与基线发布

 

内容介绍

一、 构建

二、 Apk.ap 结构讲解

三、 发布基线版本


一、 构建

进入 APP 目录下。

执行构建命令

ouiwatekiMacBook-Pro:AtlasDemo wangyan$cdapp

ouiwatekiMacBookPro:appwangyan$../gradlew assembleDebug

构建成功后看看 APP, build,outputs 下的产物。

首先,Apk 文件夹下有两个文件。分别是 app debug.ap 和 app debug.apk 。APK 文件就是我们要安装的应用。

AP 文件被称为基线版本 AP ,是将来在这个版本上进行动态部署时需要的。动态部署时会根据这个 AP 来生成差量的内容,Logs 文件是各模块 manifest 的文件默认合并的 log,remote bundles debug,这个文件夹下存放的所有远程 bundle ,远程bundle 是不会打入到 apk 文件中的。

在应用运行时可以触发远程 bundle 的下载。Apkfiles 文件。文件中记录了打包成 APP debug.Apk 中所有的文件路径,名称,还有他们 md 物质,这是为了后面动态部署差量生成时用来比较文件是否变化的依据。

atlasconfig 文件记录了 atlas 所有的配置项的值,里面包含了一些默认值。Atlas framework properties  文件主要记录了所有 bundle 信息。

bundles中的四大组件,bundles的名称、依赖版本等信息,同时还包含了哪些为自启动的bundle,哪些为atlas框架启动前要执行的类。此文件中的信息,最后会打包到 apk 中的 frameworkproperties 文件中。

之所以把这些信息写入类,而不是使用文件,是为了避免文件读取的失败,框架不能运行。build 文件记录了构建时所用的 gradle 版本、插件版本等信息。用于方便排查问题。

Dependencies 文件记录了项目中所有的依赖,dependencyTree-debug 同dependencies 文件内容相同,      

image.png 

里面详细的标明了有哪些 bundle ,他们的依赖,还有主 dex 中依赖的库,以及他们的版本。packageId files 文件记录了每个 bundle 和他们对应的资源分段。

前面插件化的基础知识中说过资源分段,是为了避免 bundle 资源与 APK 资源冲突的问题。plug in dependencies 是指插件的依赖。Version 文件记录了所有依赖的版本号和它们的格式。


二、 Apk ap 讲解

下面介绍 atlas 框架下 apk ,普通 apk 的区别

通过-d 指定文件夹。

打开这个文件夹。

apk 目录结构与普通 ApK 看起来并没有什么区别,那么 bundle 放在哪里呢?bundle 是放在 lib arm 文件夹下的。

image.png

我们的三个业务 bundle 都有 so 的形式放在 lib 下,之所以把 bundle 包装成 so 文件放到这个文件夹下,就是为了利用系统安装apk时能将帮助文件顺利解压到固定位置。解压其中一个 bundle ,查看 so 里面的结构。这里以 first bundle 为例

image.png

可以看到,bundle 的文件结构类似于一个 APK 的结构。只是这个 apk 不能单独运行,需要在 atlas 的框架下运行。之前提到项目介入 atlas 框架时,只是增加了各种配置文件,并没有像其他框架初始化有一个初始化的代码,那么这些初始化操作是在哪里呢?

看一下 apk 解压后的 android manifest 文件,

image.png

找到 application 。可以发现 application 已经被替换成 atlas Bridge Application  ,下面可以看到我们有一个属性 real application,这里面记录的是我们应用真正的 application 。atlas bridge Application 首先执行了 atlas 初始化的代码。

然后再将应用的 application 替换回来,这样再打包阶段就完成了 atlas 的介入。接下来看 AP 的结构。解压 AP 的文件。

image.png

打开解压后的文件夹,AP 文件中包含了我们的 apk 文件,还有刚才在 outputs 目录下生成的其他文件,awo 文件夹是为了单模块修改后部署,进行测试的文件。

里面包括每个 bundle 的 r 文件以及依赖关系的文件,单模块的部署会在后面给大家演示。remote bundles 文件夹是远程 bundle 的目录。这里面的 so 需要放在服务器上,在 apk 运行到远程 bundle 时,通过远程下载后,安装,加载的。远程 bundle 的存在是为了减小 apk 的大小。


三、 发布基线版本

执行 apk 的安装命令,安装到模拟器,模拟器已经启动。其版本是 APi23 ,也就是安卓6.0,模拟器的型号是X6p。

启动 atlas 的应用。第一个 tab 是 first bundle 中的内容。第二个 tab 是 second bundle 的内容。

Secondbundle 中这个按钮是打开 secondbundle 单独依赖的 AAR 的 activity。

下面我们发布基线版本,在 app 的目录下执行发布命令。

Success

ouiwatekiMacBook-Pro:apk wangyan$ cd ../../../

ouiwatekiMacBook-Pro:app wangyan$../gradlew publish Parallel execution is an incubating feature.

发布成功后打开本地的 wangyan 仓库地址。AP debug1.0.0AP 已经发布成功了。那版本号这个1.0.0是在哪里设置的呢?

可以看到 group,version,artifact ID 这几个字段。标识着我们发布的路径、名称以及版本如果要修改,可以修改这几个属性。

相关文章
|
Java 关系型数据库 MySQL
创建一个SpringBoot项目,实现简单的CRUD功能和分页查询
【9月更文挑战第6天】该内容介绍如何使用 Spring Boot 实现具备 CRUD 功能及分页查询的项目。首先通过 Spring Initializr 创建项目并选择所需依赖;其次配置数据库连接,并创建实体类与数据访问层;接着构建服务层处理业务逻辑;最后创建控制器处理 HTTP 请求。分页查询可通过添加 URL 参数实现。
483 7
|
8月前
|
存储 Java 开发者
Java 中的 equals 方法:看似简单,实则深藏玄机
本文深入探讨了Java中`equals`方法的设计与实现。默认情况下,`equals`仅比较对象引用是否相同。以`String`类为例,其重写了`equals`方法,通过引用判断、类型检查、长度对比及字符逐一比对,确保内容相等的逻辑。文章还强调了`equals`方法需遵循的五大原则(自反性、对称性等),以及与`hashCode`的关系,避免集合操作中的潜在问题。最后,对比了`instanceof`和`getClass()`在类型判断中的优劣,并总结了正确重写`equals`方法的重要性,帮助开发者提升代码质量。
626 1
|
11月前
|
人工智能
LangGraph:构建多代理动态工作流的开源框架,支持人工干预、循环、持久性等复杂工作流自动化
LangGraph 是一个基于图结构的开源框架,专为构建状态化、多代理系统设计,支持循环、持久性和人工干预,适用于复杂的工作流自动化。
1670 12
LangGraph:构建多代理动态工作流的开源框架,支持人工干预、循环、持久性等复杂工作流自动化
|
分布式计算 大数据 API
|
C++
Vscode 内存过高的解决办法
Vscode 内存过高的解决办法
2631 0
|
监控 数据可视化 应用服务中间件
Cacti设置流量阀值实现邮件报警
Cacti设置流量阀值实现邮件报警
|
Android开发
[√]Android 通过adb内存监测方法
[√]Android 通过adb内存监测方法
854 1
|
JSON 编解码 前端开发
阿里低代码引擎和生态建设实战及思考
阿里低代码引擎和生态建设实战及思考
3938 0
阿里低代码引擎和生态建设实战及思考
|
SQL 存储 缓存
MySQL 批量操作,一次插入多少行数据效率最高?
MySQL 批量操作,一次插入多少行数据效率最高?
|
存储 JSON 缓存
卡顿监测 · 方案篇 · Android卡顿监测指导原则(2)
卡顿监测 · 方案篇 · Android卡顿监测指导原则
369 0
卡顿监测 · 方案篇 · Android卡顿监测指导原则(2)