Следуйте этим инструкциям, чтобы начать сборку Android.
Настройка среды
Инициализируйте среду с помощью сценария envsetup.sh
:
source build/envsetup.sh
или
. build/envsetup.sh
См. сценарий на платформе/build/envsetup.sh для описания связанных команд, включая обед для выбора целевых устройств и тапас для создания отдельных приложений, таких как эталонное ТВ-приложение .
Вам необходимо повторно вводить эту команду после каждой repo sync
, чтобы отслеживать любые изменения в этом скрипте. Обратите внимание, что замена source
на .
(одна точка) экономит несколько символов, а короткая форма чаще используется в документации.
Сценарий envsetup.sh
импортирует несколько команд, позволяющих работать с исходным кодом Android, включая команды, используемые в этом упражнении.
Чтобы просмотреть полный список доступных команд, выполните:
hmm
Выбор цели
обед
Выберите, какую цель построить за lunch
. lunch product_name - build_variant
выбирает product_name в качестве продукта для сборки и build_variant в качестве варианта для сборки, и сохраняет эти выборки в среде для чтения при последующих вызовах m
и других подобных команд.
Точная конфигурация может быть передана в качестве аргумента. Например, следующая команда относится к полной сборке эмулятора со всей включенной отладкой:
lunch aosp_arm-eng
Если запустить без аргументов, lunch
предложит вам выбрать цель из меню, но учтите, что меню не включает в себя все возможности. См . Выбор сборки устройства для конфигураций сборки всех устройств, поддерживаемых в AOSP, или поговорите с людьми из вашей команды о правильном обеде для устройства, над которым вы работаете.
Все цели сборки имеют форму BUILD-BUILDTYPE
, где BUILD
— это кодовое имя, относящееся к конкретной комбинации функций. BUILDTYPE
— одно из следующих.
Тип сборки | Использовать |
---|---|
пользователь | Ограниченный доступ; подходит для производства |
пользовательская отладка | Как пользователь, но с root-доступом и возможностью отладки; очень близко к производственным характеристикам |
англ | Конфигурация разработки с более быстрым временем сборки; наиболее подходит для ежедневного развития |
Сборка userdebug
должна вести себя так же, как и user
сборка, с возможностью включения дополнительной отладки, которая обычно нарушает модель безопасности платформы. Это делает сборку userdebug
полезной для понимания производительности и мощности, используемых в выпуске. При разработке со сборкой userdebug
следуйте рекомендациям userdebug .
В eng
сборке приоритет отдается продуктивности инженеров, работающих на платформе. В eng
сборке отключены различные оптимизации, используемые для максимизации производительности во время выполнения. В остальном сборка eng
очень похожа на сборки user
и userdebug
, поэтому разработчики устройств могут видеть, как код ведет себя в этих средах.
Чтобы увидеть текущие настройки обеда, выполните команду:
echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"
Дополнительную информацию о сборке и работе на реальном оборудовании см. в разделе «Прошивка устройств» .
тапас
Команда tapas
настраивает сборку отдельных приложений. Он выбирает отдельные приложения, которые будут созданы системой сборки Android. В отличие от lunch
, tapas
не требует создания изображений для устройства.
Запустите tapas help
, чтобы получить дополнительную информацию о команде.
Создание кода
Этот раздел представляет собой краткое описание, позволяющее убедиться в завершении настройки.
Постройте все с помощью m
. m
может обрабатывать параллельные задачи с аргументом -jN
. Если вы не укажете аргумент -j
, система сборки автоматически выберет количество параллельных задач, которое, по ее мнению, является оптимальным для вашей системы.
m
Как объяснялось выше, вы можете создавать отдельные модули вместо полного образа устройства, указав их имена в командной строке m
. Кроме того, m
предоставляет несколько псевдоцелей для специальных целей. Некоторые примеры:
-
droid
-m droid
нормальной сборки. Эта цель находится здесь, потому что цель по умолчанию требует имени. -
all
—m all
создает все, что делаетm droid
, плюс все, что не имеет тегаdroid
. Сервер сборки запускает это, чтобы убедиться, что все, что находится в дереве и имеет файлAndroid.mk
, строится. -
m
— Запускает сборки с вершины дерева. Это полезно, поскольку вы можете запускатьmake
из подкаталогов. Если у вас установлена переменная средыTOP
, она использует ее. Если вы этого не сделаете, он просматривает дерево из текущего каталога, пытаясь найти вершину дерева. Вы можете либо построить все дерево исходного кода, запустивm
без аргументов, либо построить конкретные цели, указав их имена. -
mma
— собирает все модули в текущем каталоге и их зависимости. -
mmma
— собирает все модули в предоставленных каталогах и их зависимости. -
croot
—cd
к вершине дерева. -
clean
-m clean
удаляет все выходные и промежуточные файлы для этой конфигурации. Это то же самое, что иrm -rf out/
.
Запустите m help
, чтобы увидеть, какие еще псевдоцели предоставляет m
.
Запуск сборки
Вы можете запустить сборку на эмуляторе или прошить ее на устройстве. Поскольку вы уже выбрали цель сборки с помощью lunch
, маловероятно, что она будет работать на другой цели, отличной от той, для которой она была создана.
Прошивка с помощью фастбута
Чтобы прошить устройство, используйте fastboot
, который должен быть включен в ваш путь после успешной сборки. Инструкции см. в разделе «Прошивка устройства» .
Эмуляция Android-устройства
Эмулятор автоматически добавляется в ваш путь в процессе сборки. Чтобы запустить эмулятор, введите:
emulator
Понимание отпечатков пальцев сборки
Чтобы отслеживать и сообщать о проблемах, связанных с конкретной сборкой Android, важно понимать «отпечаток» сборки. Отпечаток сборки — это уникальная, удобочитаемая строка, содержащая информацию о производителе, присвоенную каждой сборке. Точный синтаксис см. в описании FINGERPRINT в разделе «Параметры сборки» документа определения совместимости Android (CDD).
Отпечаток сборки представляет конкретную реализацию и версию Android. Этот уникальный ключ позволяет разработчикам приложений и другим лицам сообщать о проблемах с конкретными версиями прошивки. Процесс сообщения о проблемах Android см. в разделе «Сообщения об ошибках» .
Отпечаток сборки инкапсулирует все детали реализации Android:
- API: Android и нативные, а также поведение программного API.
- Базовый API и некоторое поведение системного пользовательского интерфейса
- Требования совместимости и безопасности, определенные в CDD.
- Спецификации продукта и настройки функций использования, используемые приложениями для целевых устройств, отвечающих ожидаемым требованиям.
- Внедрение аппаратных и программных компонентов
Подробную информацию см. в CDD , а инструкции по созданию совершенно нового устройства Android — в разделе «Добавление нового устройства».
Устранение распространенных ошибок сборки
Неправильная версия Java
Если вы пытаетесь создать версию Android, несовместимую с вашей версией Java, 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/initializing.html ************************************************************
Вот вероятные причины и решения:
- Не удалось установить правильный JDK, как указано в требованиях JDK . Убедитесь, что вы выполнили действия, описанные в разделах «Настройка среды» и «Выбор цели» .
- На вашем пути появится еще один ранее установленный JDK. Добавьте правильный JDK в начало пути или удалите проблемный JDK.
Нет разрешения USB
По умолчанию в большинстве систем Linux непривилегированные пользователи не имеют доступа к USB-портам. Если вы видите ошибку «Отказано в разрешении», следуйте инструкциям в разделе «Настройка доступа по USB ».
Если ADB уже запущен и не может подключиться к устройству после настройки этих правил, вы можете убить его с помощью adb kill-server
. Эта команда приводит к перезапуску ADB с новой конфигурацией.