Android super.img的解包和重新组包
Android10开始使用动态分区,system、vendor、 odm等都包含在super.img里面,可以按如下方式对super.img进行解包和组包。
super.img解包
super的解包需要工具lpunpack,但是默认没有编译,源码目录位于:system/extras/partition_tools/ ,需要手动编译生成;
在android根目录下执行
make lpunpack
编译后生成 out/host/linux-86/bin/lpunpack
simg2img super.img super_ext4.img
mkdir super_ext4
out/host/linux-86/bin/lpunpack super_ext4.img super_ext4/
解包后在super_ext4/存放着是哪个完整的system.img vendor.img product.img 是ext4格式的,也可以通过mount挂载为文件目录
打包super.img
打包需要的工具lpmake,工具在out/host/linux-86/bin/lpmake
第一步,确认各个img的大小
上面解包出来super_ext4目录下的img文件,需要重新打包成super.img,在super_ext4/目录下执行
@sys2_206:~/5_Android11_sdk_78/rockdev/Image-rk3568_r/super_ext4$ stat -c '%n %s' *
odm.img 626688
product.img 213348352
system_ext.img 123666432
system.img 980586496
vendor.img 315723776
第二步,开始打包super.img
按如下命令打包
out/host/linux-86/bin/lpmake
--metadata-size 65536 --super-name super
--metadata-slots 2
--device super:3263168512
--group rockchip_dynamic_partitions:3258974208
--partition system:readonly:980586496:rockchip_dynamic_partitions --image system=out/target/product/rk3568_r/system.img
--partition system_ext:readonly:123666432:rockchip_dynamic_partitions --image system_ext=out/target/product/rk3568_r/system_ext.img
--partition vendor:readonly:315723776:rockchip_dynamic_partitions --image vendor=out/target/product/rk3568_r/vendor.img
--partition product:readonly:213348352:rockchip_dynamic_partitions --image product=out/target/product/rk3568_r/product.img
--partition odm:readonly:626688:rockchip_dynamic_partitions --image odm=out/target/product/rk3568_r/odm.img
--sparse
--output out/target/product/rk3568_r/super.img
这个命令可以在编译android的时候通过编译log获取,log保存在out/verbose.log.gz中,可以通过如下命令显示所有log,然后在里面找lpmake
gzip -cd out/verbose.log.gz|less
原文地址:https://blog.csdn.net/weixin_43245753/article/details/131071766
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_9655.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!