Следуйте этим инструкциям, чтобы начать сборку Android.
Настройка среды
Инициализируйте среду с помощью скрипта envsetup.sh
:
source build/envsetup.sh
или же
. build/envsetup.sh
См. сценарий на странице platform/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 должна вести себя так же, как и сборка пользователя, с возможностью включения дополнительной отладки, которая обычно нарушает модель безопасности платформы. Это делает сборку userdebug удобной для пользовательского тестирования с большими возможностями диагностики. При разработке с помощью сборки userdebug следуйте рекомендациям userdebug .
Инженерная сборка ставит во главу угла производительность инженеров, работающих на платформе. Сборка eng отключает различные оптимизации, используемые для обеспечения хорошего пользовательского опыта. В остальном сборка eng ведет себя аналогично сборкам user и userdebug, чтобы разработчики устройств могли видеть, как код ведет себя в этих средах.
Дополнительные сведения о сборке и работе на реальном оборудовании см. в разделе Flashing Devices .
тапас
Команда 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.
- Core 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 перезапуститься с новой конфигурацией.