您的位置:首页 > 移动开发 > Android开发

android中system.img的打包过程

2016-06-14 20:05 423 查看
一个制作system.img的命令实例:

$ ./make_ext4fs -s -T 1421464178 -S file_contexts -l 1073741824 -a system system.img system/

参数说明:

// -s 表示安静处理,不输出动作,可以不带该参数

// -T 表示Unix时间戳,对system.img中的文件设置修改时间,可以到搜索“站长之家 时间戳”获取某个时间点的时间戳;

// -S 表示sepolicy 的file_contexts

// -l 表示最大的文件大小(受限于分区大小);

// -a 表示Android的mount点,比如system、userdata、recovery;

// system.img 表示输出文件名;

// system/ 表示输入目录,该目录下有framework、app、bin等目录;

这里需要对file_contexts进行一下说明,该文件是对selinux文件系统的说明,一般在原来镜像文件的root目录下可以找到,如果自己修改/增加/删除了执行文件,可能需要对文件进行修改。具体的内容比较复杂,需要selinux的知识,这里不说了。

-l表示最大的文件大小,受限制于分区大小,如果制作出来的分区镜像大于该值,将会提示失败,这里使用1GB=1073741824B,一般比较新的手机都已经具备该大小了。

这里得到是一个经过压缩的img,无法直接进行mount。如果需要mount后查看,可以通过simg2img命令进行转换然后进行mount:

$ ./simg2img system.img system.ext4.img

$ sudo mount -t ext4 system.img mnt/

当然,如果不需要查看文件,我们只需要拿到system.img就好。system.ext4.img除了在主机上查看文件,对于打包过程没有帮助。

其实制作system.img非常简单简单,这里写出来主要是为了后面一片制作android-5.0以上更新包的博文做一个参考引用。

make_ext4fs和simg2img是两个linux的执行文件,如果有Android源代码,它们是编译后的结果,出现在out/host/linux-x86/bin/目录中。

这里也提供下载路径方便下载:

make_ext4fs: http://download.csdn.net/detail/howellzhu/8370473
simg2img: http://download.csdn.net/detail/howellzhu/8370479
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: