1、众所周知,android的底层是linux。我们此处对system.img的操作也要在linux下进行。如果你使用的是windows,可以使用Vmware虚拟机,安装linux操作系统。我使用的是ubuntu。
2、我们可以在/boot目录下(也可以是别的目录,下面的文件名亦可修改)新建3个文件夹:
新建/boot/work:主要的工作空间
新建/boot/system:用于挂载sdk中原本的system.img镜像
新建/boot/newsystem:用于挂载新制作的ext4格式镜像
3、在网上下载make_ext4fs工具
a)将make_ext4fs、mkuserimg.sh、simg2img三个文件拷贝到/boot/work目录下。
b)将sdk中的system.img拷贝到/boot/work目录下(例如我sdk中system.img的路径为:\adt-bundle-windows-x86-20131030\sdk\system-images\android-19\armeabi-v7a)。
c)制作新的system空白镜像,下面以制作300M的newsystem.img为例:
生成镜像文件:# dd if=/dev/zero of=newsystem.img count=614400
将镜像文件制作ext4文件系统:#./make_ext4fs newsystem.img
更改权限:#chmod 666 newsystem.img
好了,准备工作完成。
4、挂载镜像
a) 挂载镜像system.img到/boot/system目录
# mount -t ext4 -o loop system.img /boot/system
b) 挂载镜像newsystem.img到/boot/newsystem目录
# mount -t ext4 -o loop newsystem.img /boot/newsystem
挂载好之后,我们只要打开/boot/system和/boot/newsystem目录,就可以看到system.img和newsystem.img中所对应的类容。
可以看到,system中有很多内容,而newsystem中只有lost+found。现在我们可以对system作任意修改(比如删除掉app里的apk)。修改完之后我们利用cp命令将system中的内容拷贝到newsystem文件文件夹中。然后,解除挂载。
至此,/boot/work目录下的system.img及newsystem.img都修改完成。这两个镜像的内容完全一样,只是system.img的大小还是原本的大小,而newsystem.img减小为300M。当然,如果你不需要修改镜像的大小,直接使用system.img就可以了,newsystem.img也不用创建。
5、注:userdata.img亦可用此方法制作。