系统结构
META-INF
这里面主要是卡刷包的签名文名和刷机时执行的脚本(updater-script),移植时,我们主要要更改的就是刷机的脚本。
system
这里面就是android的系统部分
app这里存放的是系统的app,每个app都有两个文件,一个*.apk,一个*.odex,我们在移植时,要将这个文件合并到对应的*.apk里面去,apk文件其实就是一个zip文件,可以用WinRAR或7zip打开的,当然,合并odex文件不是把它改名直接放到apk里去这么简单的,后面具体介绍一下。还有,这个文件夹里面的程序,刷完以后是不能通过程序管理来卸载的。
bin这里面存放的是native程序,不好意思,一下子忘掉中文怎么说了。简单来说,apk是JAVA程序,而这个是C/C++的程序。
etc这里面存放的是系统默认的配置文件,GPS的配置也在这里
fonts这个是字体文件夹,一般很少改动, 除非要做美化
framework这里存放的是android框架,移植MIUI,很多改动在这个文件夹里,美化ROM的话, 主要改framework-res.apk就可以了。当然,MIUI本身就有主题机制了,不用这么麻烦去改。这个文件夹里也会有对应的odex文件。
lib一些通过的类库,一般是由app/bin里面的程序调用的。
media媒体文件,要添加系统默认的铃声就在这里了。如果是别的ROM的话, 壁纸也会放在这里面。
usr这个文件夹我不知道如何解释,移植时,键盘布局文件就在这里面
xbin扩展命令文件夹,一般不动它,有一些ROM可能直接用busybox来替代了。
build.prop这个文件也类似于一个配置文件,它主是描述了这个ROM的版本,对应的机型名称,还会有部分的硬件配置,移植的时候我们也会要修改这个文件。
boot.img系统核心,其实就是Linux内核部分,这个img也是可以解开来定制的,但我没有试过。如果你喜欢新的核心的话,可以将这个文件替换,不过要兼容才行。
分区描述
Boot 分区:
当按下电源键开机时,手机会进入正常启动模式。Secondarystage bootloader 会从 boot 分区开始启动。Boot 分区的格式是固定的, 首先是一个头部,然后是 Linux 内核,最后是用作根文件系统的ramdisk。当 Linux 内核启动完毕后,就开始执行执行根文件系统中的 init 程序, init 程序会读取启动脚本文件(init.rc 和init.xxxx.rc)。
根文件系统中有一个重要的配置文件,叫 default.prop,该文件的内容一般为:
ro.secure=1
ro.allow.mock.location=1
ro.debuggable=0
persist.service.adb.enable=1
这里大家需要注意的两属性ro.secure 和 ro.debuggable,如果ro.secure=0则允许我们运行 adb root 命令,通常大家说说内核 ROOT 指是就是 ro.secure=0。 而一般所说的 ROOT 权限指的是手机上有一个名为授权管理的程序 (Superuser.apk)可以授予程序 root 用户的权限。
System 分区:
System/app:app 目录下存放的是核心应用,也就是大家熟知的系统 APP,这些系统自带的程序是不能简单的卸载的,要通过特殊的方式才能删除(大家熟悉的是ROOT后用 RE 文件管理器来精简系统,达到纯净,流畅的效果)。
System/lib:lib 目录下存放的线 JNI 层,Dalvik 虚拟机,本地库, HAL 层和厂家适配层的所有动态链接库(.so 文件)。
System/framework:该目录下存放的是框架层的 JAR 包,其中系统最重要的JAR包(framework.jar,android.policy.jar,services.jar)。
System/fonts:该目录下存放的是系统缺省的字体文件。
System/media:该目录下存放是是系统所使用的各种媒体文件, 比如说开机音乐,动画,丌同机型略有丌同。
System/bin:该目录下存放的是一些可执行文件 ,基本上是由 C/C++编写的。
System/xbin:该目录下存放的是一些扩展的可执行文件,既该目录 可以为空。大家常用的 busybox 就放在该目录下。Busybox 所建立 的各种符号链接命令都是放在该目录。
System/build.prop:build.prop 和根文件系统中的 default.prop 文件格式一样,都称为属性配置文件。它们都定义了一些属性值,代码可以读取戒者修改这些属性值。属性值有一些命名规范:ro 开头的 表示只读属性,即这些属性的值代码是无法修改的。Persist 开头的表示这些属性值会保存在文件中,这样重新启动乊后 这些值还保留。很多 ROM 制作都会修改一下 build.prop 信息,ro.build 开头的属性就是手机设置关于手机看到的,修改这个属性就在ROM 打上自己印记,比如某某修改。Ro.build.display.id=后面就是版本号
System/etc:该目录存放一些配置文件,和属性配置文件丌一样,这下面的配置文件可能稍微没那么的有规律,一般来说,一些脚本程序,还有大家所熟悉 GPS 配置文件(gps.conf)和 APN 配置文件 (apns-conf.xml)放在这个目录。
System/media/bootanimation.zip这就是我们手机开机的第二屏,相应于WINDOW开机画图。(注:开机第一屏,就相当于电脑系统的BIOS,这个也可以更改,但是不同厂商的路径和定义方法会不同。)
其实ROM的机构不仅仅是这几个文件夹和文件,还包括一个叫data的文件夹。
这个data文件夹下也有一个app文件夹。这个文件夹是干什么的,前提这里要告诉大家的是system/app文件夹的程序,一旦我们刷进手机,就不能删除了。而data\app文件夹下的程序刷机后,我们可以在手机上卸载。这就是为什么有些ROM在介绍里说:自带XX软件,可以卸载。
Date 和 cacher 分区:
当开机进入桌面程序后,一般来说我们都会下载安装一些 APP,这些 APP 都安装在data/app 目录下,所有的 android 程序生成的数 据基本上都保存在 data/data 目录下。Wipe data 实质上就是格式化 data 分区,这样我们安装的所有 APP 和程序数据都丢失了。
Cache 分区从名字上来看是用来缓存一些文件的,比如说一些音乐下载的临时文件,戒者下载管理下载的内容基本上放在这个分区。