按照此页面上的说明构建 Android。
设置您的构建环境
在您的工作目录中,source envsetup.sh
脚本以设置您的构建环境
source build/envsetup.sh
此脚本导入了多个命令,可让您使用 Android 源代码,包括此页面上使用的命令。要查看脚本的源代码,请参阅 platform/build/envsetup.sh
。要查看内置帮助,请键入 hmm
。
选择目标
在构建 Android 之前,您必须确定要构建的目标。目标反映了您要构建的目标平台。要确定要构建的目标,请使用 lunch
命令,后跟一个表示目标的字符串。例如
lunch aosp_cf_x86_64_phone-trunk_staging-userdebug
您应该看到的是您的目标和构建环境的概要
============================================
PLATFORM_VERSION_CODENAME=VanillaIceCream
PLATFORM_VERSION=VanillaIceCream
PRODUCT_INCLUDE_TAGS=com.android.mainline
TARGET_PRODUCT=aosp_arm
TARGET_BUILD_VARIANT=eng
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=generic
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.5.13-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete
HOST_CROSS_OS=windows
BUILD_ID=AOSP.MAIN
OUT_DIR=out
============================================
表示目标的字符串具有以下格式
lunch product_name-release_config-build_variant
此字符串的组成部分是
product_name
是您要构建的产品的名称,例如aosp_cf_x86_64_phone
或aosp_husky
。您的特定product_name
可以遵循您自己设备的格式,但 Google 用于其设备的格式具有以下组成部分aosp
指的是 Android 开放源代码平台。- (可选)当目标旨在 Cuttlefish 模拟器中运行时,会包含
cf
。 - 架构和硬件(代号),例如
x86_64_phone
或husky
,它是 Pixel 8 Pro 的代号。有关 Google 设备代号的列表,请参阅 设备代号。
release_config
设置为发布配置,例如名为trunk_staging
的开发发布配置。发布配置标识功能启动标志背后的一些功能和代码,这些功能和代码在构建时启用或禁用。有关发布配置的更多信息,请参阅 设置功能标志启动值。字符串的
build_variant
部分可以是下表中的三个值之一build_variant
描述 user
此构建变体提供有限的安全访问权限,适合用于生产。 userdebug
此构建变体可帮助设备开发者了解开发中版本的性能和功耗。使用 userdebug
构建进行开发时,请遵循 userdebug 指南。eng
如果您不关心性能和功耗,则此构建变体具有更快的构建时间,最适合日常开发。
如果您在不带任何参数的情况下运行 lunch
,则会提供常见目标的列表。您还可以使用此页面上的信息以及 设备代号 中代表特定 Google 硬件的代号,将目标字符串的元素拼凑在一起,从而创建自己的目标字符串。
查看当前目标
要查看当前的 lunch 设置,请运行
$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"
构建代码
运行以下命令来构建您的目标。根据您工作站的规格,首次构建可能需要不到一小时到几个小时。后续构建所需的时间将大大减少。
m
构建的输出将显示在 $OUT_DIR
中。如果您构建不同的目标,则每个目标构建都将显示在 $OUT_DIR
中。
m
命令从树的顶部进行构建,因此您可以从子目录中运行 m
。如果您设置了 TOP
环境变量,则 m
命令将使用它。如果未设置 TOP
,则 m
命令将从当前目录向上查找树,尝试查找树的顶部。
m
命令可以使用 -jN
参数处理并行任务。如果您不提供 -j
参数,构建系统会自动选择它认为最适合您系统的并行任务计数。
您可以通过在 m
命令行中列出模块名称来构建特定模块,而不是构建完整的设备映像。此外,m
命令还提供了一些伪目标,称为目标。例如,m nothing
不会构建任何内容,但会解析和验证构建结构。有关有效目标的列表,请键入 m help
。
排查构建错误(8.0 或更早版本)
如果您构建的是 AOSP 8 或更早版本,则当 m
遇到 Java 版本问题时,可能会中止。例如,您可能会收到此消息
************************************************************
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://aosp.org.cn/source/initializing.html
************************************************************
以下是可能的原因和解决方案
- 您未能按照 设置 AOSP 开发环境(2.3 - 8.0) 的 JDK 部分中的规定安装正确的 JDK。
- 您的路径中出现了另一个先前安装的 JDK。将正确的 JDK 添加到路径的开头,或删除有问题的 JDK。