很纯、很生硬的架构技术归纳blog
上上文https://blog.csdn.net/dongyi1988/article/details/128617738
接上文https://blog.csdn.net/dongyi1988/article/details/128629011
android架构官网地址https://source.android.google.cn/docs/core/architecture?hl=zh-cn
GKI(通用内核镜像)
https://source.android.google.cn/docs/core/architecture/kernel?hl=zh-cn
DTB&DTBO(设备树&设备树叠加层)
https://source.android.google.cn/docs/core/architecture/dto/partitions
https://blog.csdn.net/dongyi1988/article/details/103995862 2、多设备树叠加层合入(dtbo)
ko模块(linux动态加载模块)
https://www.bbsmax.com/A/Ae5RN42r5Q/
ODM、product、version编译
这几个镜像是集合到super里面的sparse格式压缩镜像,原格式一般是文件系统格式,开机时直接挂载使用。
查编译日志,编译mk文件可以看到编译规则。
GSI(通用系统镜像)
https://developer.android.google.cn/codelabs/using-android-q-gsi#0
https://source.android.google.cn/docs/setup/build/gsi
vendor(平台仓)
高通和MTK开始分仓了,肯定会用到VNDK,具体细节查看源码。
VNDK(The Vendor Native Development Kit)
google官网https://source.android.google.cn/docs/core/architecture/vndk
使用方式参考官网或源代码。
技术扩展
开机logo自适应方案
https://blog.csdn.net/dongyi1988/article/details/103995862 1、多开机画面适配
SELinux
SELinux 也有域的概念、system与vendor域添加位置不同,启动加载不同https://source.android.google.cn/docs/security/features/selinux/vendor-init?hl=zh-cn
https://blog.csdn.net/dongyi1988/article/details/103994152日志种多次加载SELinux文件规则也是受开机流程影响,第一次load rootfs的policy,第二次load system的policy,第三次 load vendor的policy。
Overlayfs
Overlayfs是一种类似aufs的一种堆叠文件系统,
https://blog.csdn.net/qq_15770331/article/details/96699386
域的实现
下面6个域所用镜像如下,涉及到的技术(除拆包、打包、仓库管理、签名外)如下:
system系统域,主要system.img,涉及GSI,VNDK,system的SELinux。
vendor芯片域,分vendor.img和boot.img
vendor.img需要VNDK,需要芯片厂商的vendor仓隔离,vendor的SELinux;
boot.img需要GKI,boot的SELinux,
device设备域,主要boot.img里面的device-tree、ko动态库和DTBO、器件的配置文件一般存储在odm.img;
odm厂商域,主要odm.img,包括app、配置文件、ko动态库等;
product产品域,主要product.img,包括app、配置文件等;
version版本域,主要version.img,包括app、配置文件等,可能需要kernel支持overlayfs;
Modem、安全、稳定性等内容没涉及,实际拆起来还有不少问题要解决。
这种拆分思想倒是可以应用到非终端、非android的项目。
拆分是好,但是老板不听话,我也很难办。
The end!