Сборка 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_phone или aosp_husky . Ваше конкретное product_name может следовать вашему собственному формату, но формат, который использует Google, содержит следующие компоненты:

    • aosp относится к платформе Android с открытым исходным кодом.
    • (необязательно) cf включается, если цель предназначена для запуска в эмуляторе Cuttlefish.
    • архитектура и оборудование, например x86_64_phone или husky (Pixel 8 pro).
  • release настроен на trunk-staging .

  • Часть строки build_variant может быть одним из трех значений в следующей таблице:

    build_variant Описание
    user Этот вариант сборки обеспечивает ограниченный безопасный доступ и подходит для производства.
    userdebug Этот вариант сборки помогает разработчикам устройств понять производительность и возможности версий, находящихся в разработке. При разработке с использованием сборки userdebug следуйте рекомендациям для userdebug .
    англ Этот вариант сборки требует более быстрого времени сборки и лучше всего подходит для повседневной разработки, если вас не волнуют производительность и мощность.

Создайте код

Запустите следующую команду, чтобы создать цель. В зависимости от характеристик вашей рабочей станции первая сборка может занять от менее часа до нескольких часов. Последующие сборки занимают значительно меньше времени.

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

Команда 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://source.android.com/source/initializing.html
************************************************************

Вот вероятные причины и решения:

  • Вам не удалось установить правильный JDK, как указано в разделах JDK документа Настройка для разработки AOSP (2.3–8.0) .
  • На вашем пути появляется еще один ранее установленный JDK. Добавьте правильный JDK в начало пути или удалите проблемный JDK.