linux下的system.img解壓和打包工具,arm端制作yaffs2格式鏡像工具mkyaffs2image,可在android手機(jī)上執(zhí)行,非x86。
mkyaffs2image的使用:
在Ubuntu中第一次使用mkyaffs2image命令時(shí),會(huì)提示
mkyaffs2image:找不到命令
還需要安裝mkyaffs2image
http://code.google.com/p/fatplus/downloads/detail?name=yaffs2-source.tar&can=2&q=
下載yaffs2-source.tar
解壓后,進(jìn)入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
表明安裝成功,同時(shí)也可以看到該命令的用法
mkyaffs2image dir image_file
例如,針對(duì)Android源碼中的system.img文件的生成,可以使用
$ mkyaffs2image out/target/product/smdkv210/system/ out/target/product/smdkv210/system.img
用mkyaffs2image與執(zhí)行make命令的差別:
android源代碼開(kāi)發(fā)中,
用flashtool download時(shí),需要system.img,userdata.img等文件;
當(dāng)然實(shí)際業(yè)務(wù)中也需要把第三方apk裝入系統(tǒng)中;
第三方apk放入system/app下話燒錄后用戶無(wú)法卸載,除非開(kāi)發(fā)者用adb命令;
開(kāi)發(fā)中會(huì)遇到這樣一個(gè)問(wèn)題:
第三方apk較多的話,若全部放入system/app,執(zhí)行#./makeMtk -t projectName systemimage命令后生成的system.img太大;
我這邊system.img超過(guò)200M在flashtool中刷的話,flashtool識(shí)別不了system.img;
解決的辦法是把一部分apk移到data/app下,然后重新生成userdata.img和system.img;
==================
上面方法有個(gè)弊端:如果更改了一些系統(tǒng)apk,比如launcher2.apk改成iphonelaucher.apk;
即使system/app中#rm -rf launcher2.apk了(手動(dòng)刪除也一樣),
執(zhí)行#./makeMtk -t projectName systemimage命令后系統(tǒng)會(huì)自動(dòng)在system/app下生成launcher2.apk,
這樣在system/app下就同時(shí)有這兩個(gè)launcher了;
縱然lancher2.apk沒(méi)有被調(diào)用它還是在里頭;
增加了system.img的大小;
有幾十個(gè)這樣的apk的話,那system.img就很容易大于200M而不能刷了;
========
解決辦法:用mkyaffs2image打包成system.img及u