由于现在系统的emmc容量越来越大,以及android应用的越来越庞大复杂,一些分区的size也越来越大比如system.img,userdata.img,cache.img,boot.img等。以前这些img的格式都是ext3或4,现在android环境默认情况下编译出的这些img是一种叫做sparse格式的文件。
顾名思义 sparse是一种稀疏的文件描述格式,size比ext4的要小很多,而ext4格式的文件中有很多零填充。可以通过file命令来区分文件损坏那种格式。
例如 file system.img,如果是sparse格式只会显示一个data,而如果是ext4格式会显示一长串字符,其中有ext4字样。
这两种格式的img之间可以通过工具进行转换,转换的工具放在编译后生成的out/host/linux-x86/bin/里,分别为simg2img和img2simg,必须要经过完整的android编译才会生成,只编译lk或bootimg是不会生成的。
例如要将raw ext4格式转换为sparse格式,可以这样:img2simg system.raw.img system.simg。
为什么要知道转换的方法,因为现在android默认编译出的sytem.img, cache.img, userdata.img等都是sparse格式的,而下载工具很可能只支持ext4格式的Img下载,这时就需要手动转换一下,比如高通的QFIL,如果不转换成ext4格式的img进行加载,开机后这些分区是挂载不上的,系统自然也无法起来。切记!