编译完成之后,会在
“kernel/arch/arm/boot/”
目录下生成名为
zImage
的文件;稍后再运行
系统时,就可以不使用
Android SDK
为我们提供的镜像文件,而加载该镜像以及上一节编译的
系统镜像。既然要测试,就需要
SDK
,所以我们一下步将编译
SDK
。
3 .编译 SDK
要测试以上所编译的镜像和使用 SDK 进行应用开发,就需要编译 SDK (当然,如果你不 想编译,也可以直接到官方网站下载 SDK ,本书所使用的全部是通过源码编译出来的工具)。 由于编译 Android 源码和内核时并不会自动编译 SDK ,因此下面我们就来手动编译 SDK 。
注意 如果需要,建议先编译 ADT 和单独模块,因为在编译 ADT 和单独模块时会 清除编译 SDK 所生成的目录。 SDK 的编译其实很简单,基本上不用配置,直接进入存放 Android 源码的目录,使用如下 命令即可,如图 1-27 所示。
$ make PRODUCT-sdk-sdk
编译时间稍长,编译后生成的 SDK 存放在 out/host/linux-x86/sdk/ 目录下。此目录下有
android-sdk_eng.xxx_linux-x86.zip 和 android-sdk_eng.xxx_linux-x86 两个目录, android-sdk_ eng.xxx_linux-x86 就是我们需要使用的 SDK 。建议大家将 SDK 备份,因为我们马上会讲到的 单独模块的编译可能会清除 SDK 目录。
4 .编译单独模块
Android 允许我们对应用程序进行单独编译,但是编译后需要重新生成 system.img ,下面 就来学习如何单独编译应用程序。 首先,需要在源码存放目录中执行如下命令,注意: “.” 后面有空格。
$ . build/envsetup.sh
完成之后就会多出以下命令,你可以加上 -help 查看其用法。
- croot: Changes directory to the top of the tree.
- m: Makes from the top of the tree.
- mm: Builds all of the modules in the current directory.
- mmm: Builds all of the modules in the supplied directories.
- cgrep: Greps on all local C/C++ files.
- jgrep: Greps on all local Java files.
- resgrep: Greps on all local res/*.xml files.
- godir: Go to the directory containing a file.
然后,可以使用 mmm 来编译指定目录的模块。比如,我们要编译联系人应用,可以输入 如下命令:
$ mmm packages/apps/Contacts/
编完之后生成两个文件:
out/target/product/generic/data/app/ContactsTests.apk
out/target/product/generic/system/app/Contacts.apk
最后,在运行模拟器之前,我们可以使用如下命令来重新生成 system.img (即系统镜像)。
$ make snod
5 .编译 ADT
编译 ADT 的目的是使用 Eclipse 来开发应用程序,如果你不想编译,可以在 Android 官方 网站下载,或者直接在线更新。这里,我们主要是告诉大家如何使用源码来编译 ADT 。
( 1 )配置环境
要编译 ADT ,首先应该确保系统中安装了 Eclipse 。如果没有安装,那么在编译 ADT 时会 下载安装(但这需要取得 root 权限,否则无法安装,也就无法编译);如果需要自己手动下载并 安装 Eclipse ,建议下载 Eclipse3.4.0 RCP 版本,因为自动下载安装时,下载的是 Eclipse3.4.0 RCP ; 如果高于这个版本,编译过程中可能会出现找不到某些 jar 文件的情况,使得编译无法继续。编 译 ADT 的过程很简单,但是经常会因为环境的准备不够充分而出错。所以,笔者建议大家下载官方的 ADT 或者让 ADT 编译过程自己下载合适的 Eclipse 版本,以减少错误的发生。
安装好 Eclipse 之后需要设置 ECLIPSE_HOME 的环境变量,否则编译程序会认为你没有 装 Eclipse ,然后又帮你重新下载,我们不希望出现这样的情况。比如,笔者将 Eclipsse 安装在 “~/Develop/eclipse-android_src/eclipse-RCP-3.4-linux-gtk” 目录中,就在 .bashrc 文件中加入如下 代码(如果不知道如何添加环境变量,请查看 “Android kernel 编译 ” 章节的环境配置,这里 我们修改的当然是用户的环境变量,同样也可以修改整个系统的环境变量)。
export
ECLIPSE_HOME=$PATH:~/Develop/eclipse-android_src/eclipse-RCP-3.4-linux-gtk
( 2 )编译 ADT
准备好环境之后,要编译 ADT ,进入 Android 源码存放目录,在终端输入如下命令即可, 结果如图 1-28 所示。其中 “/home/yarin/Android/source/adt” 即我们存放编译的 ADT 的目录。
sdk/eclipse/scripts/build_server.sh /home/yarin/Android/source/adt
图
1-28
编译
ADT
编译完成之后,就会在我们指定的存放 ADT 的目录下找到生成的 ADT ,然后就可以使用 该 ADT 搭建应用开发环境。 现在我们就已经编译了 Android 源码和所有需要使用的工具包,那么下面将测试我们的编 译是否成功,即运行编译的 Android 系统。