文章目录
-
- 0. 导读
- 1. payload 中的动态分区数据
- 2. 制作动态分区升级包
- 3. 打包动态分区数据
- 4. 解包并更新动态分区数据
-
- 4.1 设备处理接收到的 Manifest 数据
- 4.2 更新设备的动态分区数据
-
- 1. DeltaPerformer::InitPartitionMetadata
- 2. BootControlAndroid::InitPartitionMetadata
- 3. BootControlAndroid::UnmapTargetPartitions
- 4. BootControlAndroid::UpdatePartitionMetadata
- 5. InstallPlan::LoadPartitionsFromSlots
- 6. BootControlAndroid::GetPartitionDevice
- 7. BootControlAndroid::GetDynamicPartitionDevice
- 4.3 动态分区更新和映射流程
- 5. 总结
- 6. 后续计划
- 7. 其它
0. 导读
动态分区机制的底层由 linux 的 device mapper 驱动实现。因此,Android 的动态分区,主要强调的是 linux 驱动之上,Android 对动态分区的管理。第一篇《Android 动态分区详解(一) 5 张图让你搞懂动态分区原理》中提到过我对 Android 动态分区本质的看法: 动态分区管理的本质就是对分区数据的增删改查操作,操作的数据对象就是动态分区描述数据 metadata。
而对于 OTA 升级,其本质就是围绕升级数据 payload 文件的一些列操作,包括:
-
增,即 payload 文件的生成
-
删,无需此操作
-
改,各种对 payload 文件的修改,包括生成过程中的调整操作,对 payload 的修改签名等
-
查,在接收到 payload