有玩機趣的android絲者,custom ROM種西都不陌生。介牾漀漀琀限取的候,就直接用的MoDaCo Custom ROM作譎偏。肯定有不少朋友感到很好奇,些ROM都是怎麼做的。考中文社相料比少,在裡引玉,大概原理介~下。
蹛第三方ROM,通常都包括部分,一recoveryimage,一畎瀀date.zip。而大多葥第三方ROM的特色,就是加入了很多西,比如superuser程序鞃牟漀漀琀限,busybox充命令行下的功能,各種各葨配置文件或者小工具,比如默打中文locale,等等。些看似神奇的改,都是在update.zip裡面搞的,custom recoveryimage的主要作用就是引用的操作,比如你先份,再用update.zip,再重之的操作。由於custom recoveryimage和update.zip的耦合性很小,所以不少custom ROM直接都用同一捎甀猀琀漀洀 recoveryimage,絎像是出自MoDaCo作者之手。再然後,我之前的文章已有 recoveryimage的啻解,所以裡,我主要介~下update.zip的製作。
如果我直接把MoDaCoROM中的update.zip解包,我有一扎漀漀琀.img,一摎愀琀愀蜀件,一獎ystem文件,一META-INF文件。摎愀琀愀蜀件放的是init.rc,而本在系中,init.rc就是在data目下的。然,者的作用不一,裡的init.rc主要作用是機行你希望行的命令,比如MoDaCo的init.rc就是install busybox。
而值得明的,就是system文件。MoDaCoROM版本的system下有一系列作者希望放到系中的工具,蹛慎瀀欀蜀件,就放到app下,工具就放到bin和xbin下,依此推。句,system或者data目次葾是取於你自己的,你希望放的西蹜什麼,行在online系葾什麼目下,update.zip裡面就是有相葞目路,然後西就放在裡面。
具體,我在要依葫,搞一新的update.zip,那麼第一步就是首先建立一蠍件
mkdir new-update
好,假我新update.zip的作用就是我自己的一程序,my.apk,那麼,我建立葞偶目
mkdir -p new-update/system/app
cp my.apk !$
,system目就完成了。但是,update.zip的目次豬,我看MoDaCoROM中的update.zip中有文件叫META-INF,蠍件衙獟,除了根目下的三蠍件外,裡面目,就包括了一蠍件,叫update-script,容如下
show_progress 0.1 0
copy_dir PACKAGE:system SYSTEM:
set_perm_recursive 0 0 0755 0644SYSTEM:xbin
set_perm_recursive 0 0 0755 0644 SYSTEM:sd
set_perm 0 0 04755 SYSTEM:bin/su
set_perm 0 0 04755 SYSTEM:bin/a2sd
set_perm 0 0 04755 SYSTEM:xbin/busybox
copy_dir PACKAGE:data DATA:
show_progress 0.2 0
format BOOT:
write_raw_image PACKAGE:boot.img BOOT:
show_progress 0.2 10
裡面的容,大部分是恛腏做的修改置的。比如
copy_dir PACKAGE:system SYSTEM:
就是把system中新增的工具拷手機上,然後
set_perm_recursive 0 0 0755 0644SYSTEM:xbin
set_perm_recursive 0 0 0755 0644 SYSTEM:sd
set_perm 0 0 04755 SYSTEM:bin/su
set_perm 0 0 04755 SYSTEM:bin/a2sd
set_perm 0 0 04755 SYSTEM:xbin/busybox
就是置MoDaCo ROM中新增程序的限,然後
copy_dir PACKAGE:data DATA:
把data下的容(就是那楎渀it.rc)複製到手機上,然後
format BOOT:
write_raw_image PACKAGE:boot.img BOOT:
刷boot分。
那我裡有麼多新增的西,怎麼撲?
copy_dir PACKAGE:system SYSTEM:
set_perm_recursive 0 0 04755SYSTEM:app/my.apk
就可以了。你然可以做一些葒事情,比如加一FORMAT DATA之的^_^玩笑,千萬干,不然你的湥就全了。
好,那麼也就是,我腎在自己的new-update目下也建一/META-INF/com/google/目,然後把新的update-script扔去。
完了麼?差一。其艛鱙恧有葒v求了,那麼就完了,可以把下面一小跳。下面一小,是於boot.img的。在如何修改Android系葾Ramdisk以及boot像文章中,我,如果刷boot像有,就要用葒方法系找漀漀琀我自己的bootimage了,葒方法,自然就是用update.zip了。MoDaCoROM版本的update.zip也包括了一扎漀漀琀.img,但是如果我有出於各種需求自己修改的boot.img,自然就可以替襣出敓葧了。然注意,如果加了boot.img,那麼update-script裡面就不能漏掉
write_raw_image PACKAGE:boot.img BOOT:
句。
好,到在,我葎new-update目下有
/system/app/my.apk
/META-INF/com/google/update-script
/META-INF/MANIFEST.MF
/META-INF/CERT.SF
/META-INF/CERT.RSA
boot.img
恩,那麼就入打包段。你可能,有什麼的,直接zip一下不就得了。如果要是麼啻就好了,你打包後,必誘恢的容都sign一下,得到相葞捶攀rt,才能在fastboot模式中被承皋成功刷機。
在sign你的文件之前,先做麼幾件事
打包。入update文件,zip update.zip xxx xxxx xxxxxxxxxxxx。什麼意思呢,就是只把你需要的文件打包,不要用./*作。而且相路_絧是在update下面,不要在外面用zipupdate.zip./update/*種命令打包
去sun網站下最新的jre
下蠍件testsign
一定要用JRE1.6.0.16或者更高,我知道有癰心,但是提供下蒏testsigh.jar就是按照版本或者更高的,你用老版本就行不了。
好,下下以後,行絎令
~/jre1.6.0_16/bin/java-classpath testsign_path/testsign.jar testsign update.zip update-signed.zip
稍微解一下,java程序是最新jre下的,testsign_path是你放testsign.jar的地方,建放到sdk的tool目下。update是待sign文件,update-signed是指定的生成文件名。
sign行完後,用unzip -l看,
/META-INF/MANIFEST.MF
/META-INF/CERT.SF
/META-INF/CERT.RSA
三蠍件的日期性虓。我懷疑就是重新生成了三蠍件。但如果之前打包候不包括三蠍件,sign完又不新生成。因不管大局,所以我就有仔研究,有清楚的朋友傋妍。
好了,在,把你自己的update.zip放到sd卡上,在fastboot下通recovery image引,行update.zip,然後就享受你自己的修改成果吧
最後提醒一句,任何似的操作之前,都把自己的手機做好份。此方法魎考,我不任何因此造成的破壞,嘿嘿。
部落格廣告行銷
- Jun 14 Thu 2012 20:20
[Android] Android_ROM製作教程
全站熱搜
留言列表