Android5.0的更新包中system.new.dat文件的解包
来源:互联网 发布:淘宝零食营业执照 编辑:程序博客网 时间:2024/06/10 19:24
从Android 5.0开始,即使是update.zip包,也是仿照增量包的方式进行打包了。使用make otapackage得到一个zip文件,查看内容:
boot.img
file_contexts
META-INF
system.new.dat
system.patch.dat
system.transfer.list
file_contexts
META-INF
system.new.dat
system.patch.dat
system.transfer.list
显然system.img不再提供,而是提供了三个文件,利用这三个文件的脚本在/META-INF/com/google/android/updater-script文件中:
block_image_update("/dev/block/platform/msm_sdcc.1/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat");
而该函数定义在:
bootable/recovery/updater/blockimg.c:BlockImageUpdateFn()中。
代码中有一段注释用于描述transfer list文件的内容,它支持如下命令:
1) 文件的第一行是版本号,当前是1;
2) 文件的第二行是总共需要写入的block数量(后面new命令的range加起来应该等于该值);
3) erase [rangeset]: 将目标分区的range清除;
4) zero [rangeset]:将目标分区的range使用0填充;
5) new [rangeset]: 将目标分区的range使用new_data文件填充;
比如如下的一个system.transfer.list文件:
1
90270
erase 2,0,262144
new 28,0,32767,32768,32770,32833,32835,33347,65535,65536,65538,98304,98306,98369,98371,98883,124176,131072,131074,163840,163842,163905,163907,196608,196610,229376,229378,229441,229443
90270
erase 2,0,262144
new 28,0,32767,32768,32770,32833,32835,33347,65535,65536,65538,98304,98306,98369,98371,98883,124176,131072,131074,163840,163842,163905,163907,196608,196610,229376,229378,229441,229443
第一行1表示该transfer文件的版本为1;
第二行表示new命令总共要写入90270个block;
第三行表示删除的range是从0到262144,2表示range的区间描述数目是2个数值,即0和262144;
第四行表示从system.new.dat文件中读取block,然后依次写入如下14个区间:[0, 32767), [32768, 32770) ...这个区间的block总数刚好是前面描述的90270个。
这样的做法实际上是一个稀疏数组的区间描述,用以降低update.zip文件的大小和写入的数据量。
附件是Linux的一个解析transfer文件然后将system.new.dat解包为ext4格式system.img的二进制执行文件。
下载位置:http://download.csdn.net/detail/howellzhu/8267569
或者搜索sdat2img,即sparse data file to image file.
1 0
- linux 平台中 Android5.0的更新包中system.new.dat文件的解包
- Android5.0的更新包中system.new.dat文件的解包
- Android5.0的更新包中system.new.dat文件的解包
- Android5.0的更新包中system.new.dat文件的解包
- Android5.0的更新包中system.new.dat文件的打包
- AndroidL之后ROOM的zip包中关于system.new.dat无法挂载
- Android5.0以上使用raw ext4fs image制作system.new.dat
- system.new.dat一键解包工具,支持Android5.1
- 【软件】system.new.dat一键解包工具,支持Android5.1
- 更新AppStore审核中应用的包文件
- Android5.0 GMS包
- anaconda 中包的更新和安装
- system.img解包打包的方法
- system.img解包打包的方法
- CCS中DAT文件的格式
- 三、CCS中dat文件的格式
- system.img文件 解包/打包
- Android5.0以上获取topActivity的包名方法与以下的整合
- [BZOJ 2789]POI2012 Letters
- Android BitmapShader 实战 实现圆形、圆角图片
- Deep Learning 读书笔记(九)
- JAVA内存区域与内存溢出异常
- 栈
- Android5.0的更新包中system.new.dat文件的解包
- android 微信在朋友圈中屏蔽了APP store的链接解决方案
- 类 FocusTraversalPolicy 的使用方法
- auto int b=0 不能与其他类型说明符组合
- gsl_rng_alloc() exception问题
- 链队列
- 浅谈db2与oracle存储过程的不同之处
- 颜色特征
- Symmetric Tree