构建命令的基本序列如下:
初始化环境用 envsetup.sh
脚本。注意替换源用一个单一点节省了几个字符,和短的是更普遍的用在文档。
$ source build/envsetup.sh
或
$ . build/envsetup.sh
选择哪个目标构建 lunch。确切的配置能作为一个参数被通过,例如,
$ lunch full-eng
上面的例子指一个完整的模拟器构建,和所有调试使能。
假如运行没有参数,lunch
将提示你选择一个目标从菜单。
所有构建目标采取 BUILD-BUILDTYPE, BUILD 是一个特定功能组合的代号:
构建名 | 设备 | Notes |
---|---|---|
full | 模拟器 | 全部配置所有语言,应用,输入法 |
full_maguro | maguro | 全构建运行在 Galaxy Nexus GSM/HSPA+ ("maguro") |
full_panda | panda | 全构建运行在 PandaBoard ("panda") |
构建类型 使用
user 有限访问;适合产品
userdebug 像 "user" 但是有 root 访问和调试行;调试首选
eng 开发配置用附加调试工具
更多信息关于构建为和运行在实际硬件,看构建设备
编译代码
构建一切红 make。GNU make 能处理并行任务用一个 -jN 参数,和他是常见用于一些任务, N 是 1 和 2 倍,被用来构建电脑硬件线程数。例如,在一个 E5520 机器(2 个 CPU,4核心每个 CPU,2 线程每个核心),最快的构建是使用命令在make -j16 和 make -j32 之间。
$ make -j4
运行它!
你可一运行你的构建在一个模拟器或烧写到一个设备。请注意你有已经选择你的构建目标用 lunch,它是不大不可能的编译运行在一个不同的目标。
烧写一个设备
烧写一个设备,你将需要用 fastboot,应该被包括在你的一个成功编译之后的路径。让设备在到 fastboot 模式,手动的按住恰当的键组合在开机时,或从 shell 用
$ adb reboot bootloader
一旦设备是在 fastboot 模式,运行
$ fastboot flashall -w
-w 选项擦除设备上的 /data 分区,你的第一次烧写一个特定的设备这是有用的,否则是不必要的。
更多信息关于构建为和运行在一个实际硬件,看为设备构建
模拟一个 Android设备
模拟器是自动的添加到你的路径在构建过程。运行模拟器,打字
$ emulator
用 ccache
ccache 十一个编译器缓存为 C 和 C++ ,能帮组 make 构建更快。在源码树的根,做如下:
$ export USE_CCACHE=1
$ export CCACHE_DIR=/<path_of_your_choice>/.ccache
$ prebuilt/linux-x86/ccache/ccache -M 20G
你能 watch ccache 被用来做下面的:
$ watch -n1 -d prebuilt/linux-x86/ccache/ccache -s
OSX 上,你应该替换 linux-x86 用 darwin-x86。
解决常见构建错误
Java版本错误
假如你正试图构建 froyo 或更早的用 Java 1.6,或 gingerbread 或后来的用 Java 1.5,make 将终止和一个消息像这样
************************************************************
You are attempting to build with the incorrect version
of java.
Your version is: WRONG_VERSION.
The correct version is: RIGHT_VERSION.
Please follow the machine setup instructions at
https://source.android.com/source/download.html
************************************************************
这可能造成这的原因
在初始化页安装指定更正 JDK 失败。构建 Android 需要 Sun JDK 5 或 6 取决于你正在构建的发布。
你先前安装的另一个 JDK 在你的路径。你能移除冲突 JDK 从你的路径用:
$ export PATH=${PATH/\/path\/to\/jdk\/dir:/}
Repo 是构建于特定功能从 Python 2.x 和不幸的是和 Python 3 不兼容,为了使用 repo,请安装 Python 2.x:
$ apt-get install python
假如你正构建在一个 HFS 文件系统在 Mac OS X 上,你可能遭遇一个错误像这样
************************************************************
You are building on a case-insensitive filesystem.
Please move your source tree to a case-sensitive filesystem.
************************************************************
请跟着在初始化页的介绍创建一个区分大小写的磁盘镜像。
在大多数 Linux 系统,默认,未经授权的用户不能访问 USB 端口,假如你看到一个权限被拒绝错误,跟着在初始化页的介绍配置 USB 访问。
假如 adb 已经运行和获得规则设置后不能连接到设备,它能被杀死用 adb kill-server
。这将导致 adb 重启用一个新配置。