linux下的system.img解壓和打包工具,arm端制作yaffs2格式鏡像工具mkyaffs2image,可在android手機上執(zhí)行,非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與執(zhí)行make命令的差別:
android源代碼開發(fā)中,
用flashtool download時,需要system.img,userdata.img等文件;
當然實際業(yè)務中也需要把第三方apk裝入系統(tǒng)中;
第三方apk放入system/app下話燒錄后用戶無法卸載,除非開發(fā)者用adb命令;
開發(fā)中會遇到這樣一個問題:
第三方apk較多的話,若全部放入system/app,執(zhí)行#./makeMtk -t projectName systemimage命令后生成的system.img太大;
我這邊system.img超過200M在flashtool中刷的話,flashtool識別不了system.img;
解決的辦法是把一部分apk移到data/app下,然后重新生成userdata.img和system.img;
==================
上面方法有個弊端:如果更改了一些系統(tǒng)apk,比如launcher2.apk改成iphonelaucher.apk;
即使system/app中#rm -rf launcher2.apk了(手動刪除也一樣),
執(zhí)行#./makeMtk -t projectName systemimage命令后系統(tǒng)會自動在system/app下生成launcher2.apk,
這樣在system/app下就同時有這兩個launcher了;
縱然lancher2.apk沒有被調用它還是在里頭;
增加了system.img的大小;
有幾十個這樣的apk的話,那system.img就很容易大于200M而不能刷了;
========
解決辦法:用mkyaffs2image打包成system.img及u