如何制作ROM

  如何制作Android ROM

  有点玩机兴趣的android爱好者,应该对custom ROM这种东西都不陌生。我介绍root权限获取的时候,就直接用的MoDaCo Custom ROM作为例子。适用于Hero比较好的ROM还有不少,比如Drizzy’s Custom Hero ROM等等,都可以在XDA上找到。肯定有不少朋友感到很好奇,这些ROM都是怎么做的。考虑到中文社区相关资料比较少,在这里抛砖引玉,大概原理介绍一下。

  对于第三方ROM来讲,通常都包括两部分,一个recovery image,一个update.zip。而大多数的第三方ROM的特色,就是加入了很多东西,比如superuser程序来获得root权限,busybox来扩充命令行下的功能,各种各样的配置文件或者小工具,比如默认打开中文locale,等等。这些看似神奇的改动,都是在 update.zip里面搞的,custom recovery image的主要作用就是引导用户的操作,比如让你先备份,再应用update.zip,再重启之类的操作。由于custom recovery image和update.zip的耦合性很小,所以不少custom ROM直接都用同一个custom recovery image,这个好像是出自MoDaCo作者之手。再然后,我之前的文章已经有对 recovery image的简单讲解,所以这里,我主要介绍一下update.zip的制作。

  如果我们直接把MoDaCo ROM中的update.zip解包,我们会发现有一个boot.img,一个data文件夹,一个system文件夹,一个META-INF文件夹。这个data文件夹放的是init.rc,而本来在系统中,init.rc就是在data目录下的。当然,两者的作用不一样,这里的init.rc主要作用是开机执行你希望执行的命令,比如MoDaCo的init.rc就是install busybox。

  而值得详细说明的,就是system文件夹。MoDaCo ROM版本的system下有一系列作者希望放到系统中的工具,对于apk文件,就放到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的目录层次还没完,我们看MoDaCo ROM中的update.zip中有文件夹叫META-INF,这个文件夹很关键,除了根目录下的三个文件外,里面层层目录,就包括了一个文件,叫 update-script,内容如下

  show_progress 0.1 0

  copy_dir PACKAGE:system SYSTEM:

  set_perm_recursive 0 0 0755 0644 SYSTEM: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 0644 SYSTEM: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下的内容(就是那个init.rc)复制到手机上,然后

  format BOOT:
  write_raw_image PACKAGE:boot.img BOOT:

  刷boot分区。

  那我们这里没有这么多新增的东西,应该怎么写呢?

  copy_dir PACKAGE:system SYSTEM:
  set_perm_recursive 0 0 04755 SYSTEM:app/my.apk

  就可以了。你当然还可以做一些别的事情,比如加一个FORMAT DATA之类的^_^开个玩笑,千万别这个干,不然你的数据就全没了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值