android架构拆分方案-编译相关方案与技术

9 篇文章 2 订阅
5 篇文章 1 订阅

接上文https://blog.csdn.net/dongyi1988/article/details/128617738

直接代码拆分,那么在拆包和做包过程中,需要用到分仓,镜像与OTA包的拆分与组合,vendor与system相关编译依赖处理,开机验证链还必须给镜像签名。

代码管理

  1. 定制xml文件,可实现从不同仓下载代码

repo示例见 https://www.bbsmax.com/A/xl56yE1oJr/ ;示例是从本地仓库../CyanogenMod/android_build.git、远程仓库https://android.googlesource.com/platform/build/blueprint两个地方同步代码。

  1. 干净主分支,并根据需求创建子分支。

以system域为例,剥离一个android原生的干净主分支,子分支a为主干分支+HarmonyOS差异性补丁,子分支b为主干分支+MIUI差异性补丁,子分支c为主干分支+colorOS差异性补丁。

git分支使用与简介https://blog.csdn.net/m0_51371693/article/details/122653762

  1. 编译指定system域镜像,先切分支。

拆包

https://blog.csdn.net/dongyi1988/article/details/103994321

跟踪这个博客可以找到包括OTA包、boot.img、super.img等的拆解。

相关拆包网址还很多,例如https://blog.51cto.com/u_15243273/5426783

VNDK(The Vendor Native Development Kit)

google官网https://source.android.google.cn/docs/core/architecture/vndk

使用方式参考官网或源代码。

打包

boot打包是mkbootimg,参考地址https://blog.csdn.net/kunkliu/article/details/122278029

super 打包是lpmake,参考地址https://cloud.tencent.com/developer/article/2126595

制作OTA包,android原生工具https://source.android.com/docs/core/ota/tools?hl=zh-cn,输入参数tardis-target_files.zip解压就是目标版本的相关文件,修改替换即可。

其它镜像编译打包方式可以打开编译日志检索镜像名,获取编译步骤。

签名

1.secboot镜像签名依赖平台方案商,高通sectool,联发科sign_flow.py&pl_lk.py,流程自查源代码)

2.avb镜像签名,avbtool工具 https://android.googlesource.com/platform/external/avb/+/master/README.md#Using-avbtool

使用范例https://blog.csdn.net/dongyi1988/article/details/103995737 dm-verity小结

3.对OTA包的签名https://source.android.com/docs/core/ota/sign_builds?hl=zh-cn#sign-ota-packages

拆包、打包以及签名涉及很多镜像,具体操作流程可以查编译日志与mk文件。

组包编译流程

需要在andorid现有编译架构外再做个壳,经过下面几步编译出指定需求包:

  1. 将各域代码多次切分支、同步代码与编译,生成所有分支镜像,例如system域4个分支就有4个镜像system_android.img、system_harmonyOS.img、system_MIUI.img、system_colorOS.img;

  1. 存至编译服务器并版本化管理,供后面使用;

  1. 根据编译输入参数选择对应镜像,进行签名,组tardis-target_files.zip包,OTA包制作与签名。

如果没有修改内容,只是组包编译输入参数差异,直接到第c步。

如果只有system域修改:

a.如果主干分支修改,编译system域4个分支镜像;如果harmonyOS分支修改,编译system_harmonyOS.img;存至编译服务器并版本化管理;

b.根据编译输入参数选择对应镜像,进行签名,组tardis-target_files.zip包,OTA包制作与签名。

如果存在复制型文件(直接放入镜像中的文件,例如配置参数、固件等)更换,以odm中ko文件更新为例:

a. odm拆包、新ko替换、odm打包,存至编译服务器并版本化管理;

b.根据编译输入参数选择对应镜像,进行签名,组tardis-target_files.zip包,OTA包制作与签名。

这个应该是正常想到的组包编译流程。

组合OTA包太多了怎么办

升级服务器只保留最新的和常用的OTA包。

不常用的或者版本久远的OTA包在有请求时临时制作,步骤如下:

  1. 服务器不存储完整OTA包,只存储所有域的所有分支镜像;

  1. 设备发送自己的硬件信息与需求到服务器;

  1. 服务器检索匹配域镜像,组tardis-target_files.zip包生成需求的OTA包,临时存放;

  1. 下发到设备,升级。

下文,结构拆https://blog.csdn.net/dongyi1988/article/details/128633808

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kael.dong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值