Part 1 Android编译后目录研究
编译完成Android系统后,生成的结果全部在根目录的out目录中,原始的各个工程不会改动。
out目录的结构如下所示:
|-- host [主机内容]
| |-- common [主机的通用内容]
| | |-- obj
| |-- linux - x86 [编译所生成的主机Linux上运行的工具]
| |-- bin
| |-- framework
| |-- lib
| |-- obj
|-- target [目标机内容]
|-- common [目标机的通用内容]
| |-- R
| |-- docs
| |-- obj
|-- product [目标机的产品目录]
|-- generic
out / target / product / generic中存放目标产品,默认情况下作为目标产品的名称
out / target / product / generic
|-- android - info.txt
|-- clean_steps.mk
|-- data [数据目录]
|-- obj [中间目标文件记录]
| |-- APPS [Java应用程序包]
| |-- ETC [运行时配置文件]
| |-- EXECUTABLES [可执行程序]
| |-- KEYCHARS
| |-- NOTICE.html
| |-- NOTICE.html.gz
| |-- NOTICE_FILES
| |-- PACKAGING
| |-- SHARED_LIBRARIES [动态库(共享库)]
| |-- STATIC_LIBRARIES [静态库(归档文件)]
| |-- include
| |-- lib
|-- previous_build_config.mk
|-- ramdisk.img [根文件系统映像]
|-- root [根文件系统目录]
|-- symbols [符号的目录]
|-- system [主文件系统目录]
|-- system.img [主文件系统映像]
|-- userdata - qemu.img [QEMU的数据映像]
|-- userdata.img [数据映像]
其中root、system、data三个目录分别是目标根文件系统,主文件系统和数据文件系统的目录,后缀名为.img的文件分别为它们所对应的映像文件。
Part 2 运行Android
编译后,运行模拟器:
$. / out / host / linux - x86 / bin / emulator - shell
drwxrwxrwt root root 2010 - 03 - 12 19 : 26 sqlite_stmt_journalsdrwxrwx --- system cache 2010 - 03 - 12 12 : 22 cache
d --------- system system 2010 - 03 - 12 19 : 26 sdcard
lrwxrwxrwx root root 2010 - 03 - 12 19 : 26 etc -> / system / etc
drwxr - xr - x root root 2010 - 03 - 12 10 : 38 system
drwxr - xr - x root root 1970 - 01 - 01 0 8 : 00 sys
drwxr - x --- root root 1970 - 01 - 01 0 8 : 00 sbin
dr - xr - xr - x root root 1970 - 01 - 01 0 8 : 00 proc
- rwxr - x --- root root 9075 1970 - 01 - 01 0 8 : 00 init.rc
- rwxr - x --- root root 1677 1970 - 01 - 01 0 8 : 00 init.goldfish.rc
- rwxr - x --- root root 106568 1970 - 01 - 01 0 8 : 00 init
- rw - r -- r -- root root 118 1970 - 01 - 01 0 8 : 00 default.prop
drwxrwx -- x system system 2010 - 03 - 12 12 : 22 data
drwx ------ root root 1970 - 01 - 01 0 8 : 00 root
drwxr - xr - x root root 2010 - 03 - 12 19 : 26 dev
sqlite_stmt_journals:
cache : 是缓存临时文件夹,据说是除了T-mobile的OTA更新外,别无用处。
sdcard:是SD卡中的FAT32文件系统挂载的目录。
system :是一个很重要的目录,系统中的大部分东西都在这里
sys :用于挂载 sysfs文件系统。 在设备模型中,sysfs文件系统用来表示设备的结构.将设备的层次结构形象的反应到用户空间中.用户空间可以修改sysfs中的文件属性来修改设备的属性值
sbin: 只放了一个用于调试的adbd程序。
proc :/proc 文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用。
root :什么都没有。
Android根目录中主要文件夹与目标系统的out/target/product/generic/root内容相对应,此外etc,proc等目录是在启动后建立的。
system映像被挂载到根文件系统的system目录下,data映像被挂接到根文件系统的data目录中。
Part 3 Android root
然后新建一个文件夹,叫ramdisk吧,进入,输入命令
这下,就能看见并操作ramdisk里面的内容了。
根据自己的需要对里面的内容修改之后,可以使用下列命令重新打包成镜像。
cpio - o - H newc - O lk.img < list
当前目录下生成的lk.img就是我们的新镜像了。