linux下的system.img解压和打包工具,arm端制作yaffs2格式镜像工具mkyaffs2image,可在android手机上执行,非x86。
mkyaffs2image的使用:
在Ubuntu中第一次使用mkyaffs2image命令时,会提示
mkyaffs2image:找不到命令
还需要安装mkyaffs2image
http://code.google.com/p/fatplus/downloads/detail?name=yaffs2-source.tar&can=2&q=
下载yaffs2-source.tar
解压后,进入utils文件夹,然后make
将make之后生成的mkyaffs2image文件拷贝到/usr/bin目录下
$ su
# cp mkyaffs2image /usr/bin/
# chmod 777 /usr/bin/mkyaffs2image
之后
$ mkyaffs2image
mkyaffs2image: image building tool for YAFFS2 built Jan 6 2012
usage: mkyaffs2image dir image_file [convert]
dir the directory tree to be converted
image_file the output file to hold the image
'convert' produce a big-endian image from a little-endian machine
表明安装成功,同时也可以看到该命令的用法
mkyaffs2image dir image_file
例如,针对Android源码中的system.img文件的生成,可以使用
$ mkyaffs2image out/target/product/smdkv210/system/ out/target/product/smdkv210/system.img
用mkyaffs2image与执行make命令的差别:
android源代码开发中,
用flashtool download时,需要system.img,userdata.img等文件;
当然实际业务中也需要把第三方apk装入系统中;
第三方apk放入system/app下话烧录后用户无法卸载,除非开发者用adb命令;
开发中会遇到这样一个问题:
第三方apk较多的话,若全部放入system/app,执行#./makeMtk -t projectName systemimage命令后生成的system.img太大;
我这边system.img超过200M在flashtool中刷的话,flashtool识别不了system.img;
解决的办法是把一部分apk移到data/app下,然后重新生成userdata.img和system.img;
==================
上面方法有个弊端:如果更改了一些系统apk,比如launcher2.apk改成iphonelaucher.apk;
即使system/app中#rm -rf launcher2.apk了(手动删除也一样),
执行#./makeMtk -t projectName systemimage命令后系统会自动在system/app下生成launcher2.apk,
这样在system/app下就同时有这两个launcher了;
纵然lancher2.apk没有被调用它还是在里头;
增加了system.img的大小;
有几十个这样的apk的话,那system.img就很容易大于200M而不能刷了;
========
解决办法:用mkyaffs2image打包成system.img及u