Сборка Android

Следуйте этим инструкциям, чтобы начать сборку Android.

Настройка среды

Инициализировать среды с envsetup.sh сценария:

source build/envsetup.sh

или

. build/envsetup.sh

Смотрите сценарий на платформе / сборки / 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 предложит вам выбрать цель из меню. См Выбор сборки устройства для сборки конфигураций всех существующих устройств.

Все цели сборок принимают вид BUILD-BUILDTYPE , где BUILD является Кодовым со ссылкой на конкретную комбинацию признаков. BUILDTYPE является один из следующих.

Тип сборки Использовать
Пользователь Ограниченный доступ; подходит для производства
userdebug Как пользователь, но с root-доступом и возможностью отладки; предпочтительнее для отладки
англ. Конфигурация разработки с дополнительными инструментами отладки

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

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

Для получения дополнительной информации о создании для и работает на имеющемся оборудовании, см мигающих устройства .

тапас

В tapas команда настраивает сборки разукрупненными приложений. Он выбирает отдельные приложения, которые будут созданы системой сборки Android. В отличии от lunch , tapas не требует здания изображений для устройства.

Запуск tapas help для получения дополнительной информации о команде.

Создание кода

Этот раздел представляет собой краткое описание, чтобы убедиться, что настройка завершена.

Построить все с m . m может обрабатывать параллельные задачи с -jN аргументом. Если вы не обеспечиваете -j аргумента, система сборки автоматически выбирает параллельный подсчет задач, он считает оптимальным для вашей системы.

m

Как объяснялось выше, вы можете создать специальные модули вместо полного устройства изображения с указанием их имен в m командной строке. Кроме того, m обеспечивает некоторые pseudotargets для специальных целей. Вот несколько примеров:

  • 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 , чтобы увидеть , что другое pseudotargets m обеспечивает.

Запуск сборки

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

Прошивка с помощью fastboot

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