构建 Android

按照此页面上的说明构建 Android。

设置您的构建环境

从您的工作目录中,获取envsetup.sh脚本来设置您的构建环境:

source build/envsetup.sh

此脚本导入多个命令,使您可以使用 Android 源代码,包括本页上使用的命令。要查看脚本的源代码,请参阅platform/build/envsetup.sh 。要查看内置帮助,请输入hmm

选择目标

在构建 Android 之前,您必须确定要构建的目标。目标反映了您正在构建的目标平台。要确定要构建的目标,请使用lunch命令,后跟代表目标的字符串。例如:

lunch aosp_cf_x86_64_phone-trunk_staging-userdebug

查看当前目标

要查看当前的午餐设置,请运行:

$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"

表示目标的字符串具有以下格式:

lunch product_name-release-build_variant

该字符串的组成部分是:

  • product_name是您要构建的产品的名称,例如aosp_cf_x86_64_phoneaosp_husky 。您的特定product_name可以遵循您自己的设备格式,但 Google 为其设备使用的格式具有以下组成部分:

    • aosp指的是 Android 开源平台。
    • (可选)当目标打算在 Cuttlefish 模拟器中运行时,包含cf
    • 架构和硬件(代号),例如x86_64_phonehusky (Pixel 8 pro 的代号)。有关 Google 设备的代号列表,请参阅设备代号
  • release设置为trunk_staging

  • 字符串的build_variant部分可以是下表中的三个值之一:

    build_variant描述
    user此构建变体提供有限的安全访问,适合生产。
    userdebug此构建变体可帮助设备开发人员了解正在开发的版本的性能和功能。使用userdebug版本进行开发时,请遵循userdebug 指南
    英语此构建变体具有更快的构建时间,如果您不关心性能和功耗,那么它最适合日常开发。

如果您在没有任何参数的情况下运行lunch ,则会提供常见目标的列表。您还可以使用此页面上的信息以及设备代号中代表特定 Google 硬件的代号将目标字符串的元素拼凑在一起,从而创建自己的目标字符串。

构建代码

运行以下命令来构建您的目标。根据工作站的规格,第一次构建可能需要不到一个小时,最长可能需要几个小时。后续构建所需的时间明显减少。

$ m

您应该看到的第一个输出是目标和构建环境的概要:

============================================
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
============================================

构建的输出出现在 ` $OUT_DIR中。如果您构建不同的目标,每个目标构建都会出现在$OUT_DIR中。

m命令从树的顶部构建,因此您可以从子目录中运行m 。如果设置了TOP环境变量, m命令将使用它。如果未设置TOPm命令将从当前目录查找树,尝试找到树的顶部。

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://source.android.com/source/initializing.html
************************************************************

以下是可能的原因和解决方案:

  • 您未能安装AOSP 开发设置 (2.3 - 8.0)的 JDK 部分中指定的正确 JDK。
  • 您的路径中出现了另一个先前安装的 JDK。将正确的 JDK 添加到路径的开头或删除有问题的 JDK。