此教程仅介绍MIUI刷机包架构,原理方面的东西不会涉及太多。
目录结构为了完整性,我还是简单地介绍一下:
1.
META-INF
这里面主要是签名文名和刷机时执行的脚本(updater-script),移植时,我们主要要更改的就是刷机的脚本。
2.
system
这里面就是android的系统部分
1.
app
这里存放的是系统的app,每个app都有两个文件,一个*.apk,一个*.odex,我们在移植时,可以将这个文件合并到对应的*.apk里面去,apk文件其实就是一个zip文件,可以用WinRAR或7zip打开的,当然,合并odex文件不是把它改名直接放到apk里去这么简单的,后面具体介绍一下。还有,这个文件夹里面的程序,刷完以后是不能通过程序管理来卸载的。
2.
bin
这里面存放的是native程序。简单来说,apk是JAVA程序,而这个是C/C++的程序。这个目录下的文件都是系统的本地程序,从bin文件夹名称可以看出是binary二进制的程序,里面主要是Linux系统自带的组件(命令)
3.
etc
这里面存放的是系统默认的配置文件,GPS、音频、视频、apn的配置都在这里,init.d文件夹这里主要是引导方式之类的,反正这里最好不动,或者使用你使用的内核的作者提供的,如果弄错了就会定在第一屏。
4
fonts
这个是字体文件夹,一般很少改动,除非要做美化
5.
framework
这里存放的主要是一些核心的文件,从后缀名为jar可以看出是是系统平台框架。美化ROM的话, 主要改framework-res.apk就可以了。
6.
lib
lib目录中存放的主要是系统底层库,一些so文件,如平台运行时库,一般是由app/bin里面的程序调用的。
7.
media
媒体文件,要添加系统默认的铃声就在这里了。如果是别的ROM的话,壁纸也会放在这里面。
8.
usr
用户文件夹,包含共享、键盘布局、时间区域文件等,移植时,键盘布局文件就在这里面。
9.
xbin
扩展命令文件夹,一般不动它,有一些ROM可能直接用busybox来替代了。
10.
build.prop
这个文件也类似于一个配置文件,它主是描述了这个ROM的版本,对应的机型名称,还会有部分的硬件配置,移植的时候我们也会要修改这个文件。
3.
boot.img
系统核心,其实就是Linux内核部分,这个img也是可以解开定制的。
移植步骤:
先将odex合并到apk文件中去,这里要用到工具,有工具可以用:
xUltimate: http://www.droidforums.net/forum/xeudoxus/47283-release-xultimate.html
合并的方法比较简单,以xUltimate为例,将app里面的所有文件拷到origi_app里面,将framework里面的所有文件拷到origi_frame里面,再运行程序,再过几个选项就可以进行转换了,转换好会放到另一个文件夹里面,把原来的文件删掉,把生成的放回去就可以了。如果转换过程中失败了,应该是JAVA的版本低了,升级到最新的JRE试一下。当然 也可以不合并,并不影响ROM的移植。
目前ROM已经不太需要依靠NS移植。第三方的移植成果已经很成熟。例如 变色龙 andy ASNET,这些ROM基本上创建了稳定的库与驱动以及底层架构。
驱动方面可以直接适用上面提到的ROM里的文件。或者你使用CM9 相关机型包的文件。
至此,ROM的基本移植已经完成。
updater-script安装脚本
通常安装脚本不需要修改太多。 变色龙与andy的脚本使用的是常规的安装脚本。 默认安装到手机相关数据,而ASNET,细化了每一个环节。第一次打包跟容易适合新手接触,查看寻找BUG,更加方便。刷机的欢迎词,也是在这个文件修改,切忌不要使用记事本打开。请使用规范编码的软件进行修改。例如:Notepad++
修改build.prop
此文件记录了手机的相关信息,提及ROM的制作人,版本号等文件。另外对个别文件也有一定的定义能力,例如 gps,屏幕亮度,本地时间等。
ROM打包就不在细说了,可以自行百度都能找到相关资料。举一反三就能理解明白。
文章没有深化深度移植的问题。需要的朋友请详读JAVA,Smai等资料