3. 验证编译之后的模块
|
4. 编译完成之后的代码结构
Android 编译 完成后,将在根目录中生成一个 out 文件夹,所有生成的内容均放置在这个文件夹中。 out 文件夹如下所示:
out/
|-- CaseCheck.txt
|-- casecheck.txt
|-- host
| |-- common
| `-- linux-x86
`-- target
|-- common
`-- product
主要的两个目录为 host 和 target ,前者表示在主机( x86 )生成的工具,后者表示目标机(模认为 ARMv5 )运行的内容。
host 目录的结构如下所示:
out/host/
|-- common
| `-- obj ( JAVA 库)
`-- linux-x86
|-- bin (二进制程序)
|-- framework ( JAVA 库 , * .jar 文件)
|-- lib (共享库 *.so )
`-- obj (中间生成的目标文件)
host 目录是一些在主机上用的工具,有一些是二进制程序 , 有一些是 JAVA 的程序。
target 目录的结构如下所示:
out/target/
|-- common
| |-- R (资源文件)
| |-- docs
| `-- obj (目标文件)
`-- product
`-- generic
其中 common 目录表示通用的内容, product 中则是针对产品的内容。
在 common 目录的 obj 中,包含两个重要的目录:
APPS 中包含了 JAVA 应用程序生成的目标,每个应用程序对应其中一个子目录,将结合每个应用程序的原始文件生成 Android 应用程序的 APK 包。
JAVA_LIBRARIES 中包含了 JAVA 的库,每个库对应其中一个子目录。
在默认的情况下, Android 编译将生成 generic 目录,如果选定产品还可以生成其他的目录。 generic 包含了以下内容:
out/target/product/generic/
|-- android-info.txt
|-- clean_steps.mk
|-- data
|-- obj
|-- ramdisk.img
|-- root
|-- symbols
|-- system
|-- system.img
|-- userdata-qemu .img
`-- userdata.img
在 generic/obj/APPS 目录中包含了各种 JAVA 应用,与 common/APPS 相对应,但是已经打成了 APK 包。
system 目录是主要的文件系统 , data 目录是存放数据的文件系统。
obj/SHARED_LIBRARIES 中存放所有动态库。
obj/STATIC_LIBRARIES 中存放所有静态库。
几个以 img 为结尾的文件是几个目标映像文件,其中 ramdisk 是作为 内存 盘的根文件系统映像, system.img 是主要文件系统的映像,这是一个比较大的文件, data.img 是数据内容映像。这几个 image 文件是运行时真正需要的文件。
5. make SDK
5.1. sdk 编译
在编译完整个系统之后,再运行 make sdk ,就可以进行 sdk 的编译了。 make sdk 将各种工具和 image 打包,供开发和调试使用。
|
|
build 之后的 log 如下:
5.2. 验证编译之后的模块
out/host/linux-x86/sdk/android-sdk_eng.huangjx_linux-x86.zip 解压到本地目录。进入tools 目录,输入下面的命令创建AVD
$ . /android create avd -t 1 -c 128M -n froyo -s HVGA
Android 2.2 is a basic Android platform.
Do you wish to create a custom hardware profile [no]
Created AVD 'froyo' based on Android 2.2, with the following hardware config:
hw.lcd.density=160
输入下面的命令,启动模拟器:
$ ./emulator -avd froyo -partition-size 160 &