Следуйте инструкциям на этой странице, чтобы собрать Android.
Настройте среду сборки
Из рабочего каталога создайте сценарий 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 с открытым исходным кодом. - (необязательно)
cf
включается, если цель предназначена для запуска в эмуляторе Cuttlefish. - Архитектура и оборудование (кодовое имя), например
x86_64_phone
илиhusky
, которое является кодовым именем Pixel 8 Pro. Список кодовых имен для устройств Google см. в разделе Кодовые имена устройств .
-
release_config
имеет значение конфигурации выпуска , например, конфигурации выпуска для разработки, называемойtrunk_staging
. Конфигурация выпуска определяет определенные функции и код, которые находятся за флагами запуска функций и либо включены, либо отключены для сборки. Дополнительные сведения о конфигурациях выпуска см. в разделе Установка значений запуска флагов функций .Часть строки
build_variant
может быть одним из трех значений в следующей таблице:build_variant
Описание user
Этот вариант сборки обеспечивает ограниченный безопасный доступ и подходит для производства. userdebug
Этот вариант сборки помогает разработчикам устройств понять производительность и возможности выпусков, находящихся в разработке. При разработке с использованием сборки userdebug
следуйте рекомендациям для userdebug .eng
Этот вариант сборки требует более быстрого времени сборки и лучше всего подходит для повседневной разработки, если вас не волнуют производительность и мощность.
Если вы запустите lunch
без каких-либо аргументов, будет предоставлен список общих целей. Вы также можете создавать свои собственные целевые строки, объединяя элементы целевой строки, используя информацию на этой странице и кодовые имена, которые представляют конкретное оборудование Google, в разделе Кодовые имена устройств .
Посмотреть текущую цель
Чтобы увидеть текущие настройки обеда, запустите:
$ 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://source.android.com/source/initializing.html
************************************************************
Вот вероятные причины и решения:
- Вам не удалось установить правильный JDK, как указано в разделах JDK документа Настройка для разработки AOSP (2.3–8.0) .
- На вашем пути появляется еще один ранее установленный JDK. Добавьте правильный JDK в начало пути или удалите проблемный JDK.
Следуйте инструкциям на этой странице, чтобы собрать Android.
Настройте среду сборки
Из рабочего каталога создайте сценарий 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 с открытым исходным кодом. - (необязательно)
cf
включается, если цель предназначена для запуска в эмуляторе Cuttlefish. - Архитектура и оборудование (кодовое имя), например
x86_64_phone
илиhusky
— кодовое имя Pixel 8 Pro. Список кодовых имен для устройств Google см. в разделе Кодовые имена устройств .
-
release_config
имеет значение конфигурации выпуска , например, конфигурации выпуска для разработки, называемойtrunk_staging
. Конфигурация выпуска определяет определенные функции и код, которые находятся за флагами запуска функций и либо включены, либо отключены для сборки. Дополнительные сведения о конфигурациях выпуска см. в разделе Установка значений запуска флагов функций .Часть строки
build_variant
может быть одним из трех значений в следующей таблице:build_variant
Описание user
Этот вариант сборки обеспечивает ограниченный безопасный доступ и подходит для производства. userdebug
Этот вариант сборки помогает разработчикам устройств понять производительность и возможности выпусков, находящихся в разработке. При разработке с использованием сборки userdebug
следуйте рекомендациям для userdebug .eng
Этот вариант сборки требует более быстрого времени сборки и лучше всего подходит для повседневной разработки, если вас не волнуют производительность и мощность.
Если вы запустите lunch
без каких-либо аргументов, будет предоставлен список общих целей. Вы также можете создавать свои собственные целевые строки, объединяя элементы целевой строки, используя информацию на этой странице и кодовые имена, которые представляют конкретное оборудование Google, в разделе Кодовые имена устройств .
Посмотреть текущую цель
Чтобы увидеть текущие настройки обеда, запустите:
$ 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://source.android.com/source/initializing.html
************************************************************
Вот вероятные причины и решения:
- Вам не удалось установить правильный JDK, как указано в разделах JDK документа Настройка для разработки AOSP (2.3–8.0) .
- На вашем пути появляется еще один ранее установленный JDK. Добавьте правильный JDK в начало пути или удалите проблемный JDK.