Сборка Android

Следуйте этим инструкциям, чтобы начать сборку 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 перезапуститься с новой конфигурацией.