Google стремится продвигать расовую справедливость для черных сообществ. Смотри как.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

Сборка Android

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

Настроить среду

Инициализируйте среду с envsetup.sh сценария envsetup.sh :

source build/envsetup.sh

или

. build/envsetup.sh

См. Сценарий в platform / build / envsetup.sh для описания связанных команд, включая lunch для выбора целей устройства и tapas для создания разделенных приложений, таких как эталонное приложение для ТВ .

Вам нужно будет повторно вводить эту команду после каждой repo sync чтобы получить любые изменения в этом сценарии. Обратите внимание, что замена source на . (одна точка) сохраняет несколько символов, а краткая форма чаще используется в документации.

Сценарий envsetup.sh импортирует несколько команд, которые позволяют вам работать с исходным кодом Android, включая команды, используемые в этом упражнении. Вот несколько важных примеров команд:

  • lunch - lunch product_name - build_variant выбирает product_name в качестве продукта для сборки и build_variant в качестве варианта для сборки и сохраняет эти выборки в среде, которые будут считываться последующими вызовами m и других аналогичных команд.
  • m - Запускает сборки с вершины дерева. Это полезно, потому что вы можете запустить make из подкаталогов. Если у вас установлена ​​переменная окружения TOP , она использует это. Если вы этого не сделаете, он ищет дерево из текущей директории, пытаясь найти вершину дерева. Вы можете либо построить все дерево исходного кода, запустив m без аргументов, либо создать конкретные цели, указав их имена.
  • mma - строит все модули в текущем каталоге и их зависимости.
  • mmma - строит все модули в поставляемых каталогах и их зависимости.
  • croot - cd к вершине дерева.

Чтобы увидеть полный список доступных команд, выполните:

hmm

Выберите цель

Выберите, какую цель построить с lunch . Точная конфигурация может быть передана в качестве аргумента. Например, следующая команда относится к полной сборке для эмулятора со всей включенной отладкой:

lunch aosp_arm-eng

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

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

Buildtype использование
пользователь Ограниченный доступ; подходит для производства
userdebug Как пользователь, но с доступом к руту и ​​возможностью отладки; предпочтительнее для отладки
анг Разработка конфигурации с дополнительными инструментами отладки

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

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

Для получения дополнительной информации о сборке и работе на реальном оборудовании см. Раздел «Запуск сборок» .

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

Этот раздел является кратким описанием того, что установка завершена.

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

m

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

  • droid - m droid это нормальная сборка. Эта цель здесь, потому что цель по умолчанию требует имени.
  • all - m all создает все, что делает m droid , плюс все, что не имеет тега droid . Сервер сборки запускает это, чтобы убедиться, что все, что находится в дереве и имеет файл Android.mk .
  • clean - m clean удаляет все выходные и промежуточные файлы для этой конфигурации. Это то же самое, что и rm -rf out/ .

Запустите m help чтобы увидеть, что предоставляют другие псевдоцелевые объекты m .

Запустить его!

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

Мигает с фастбутом

Чтобы прошить устройство, используйте fastboot , который должен быть включен в ваш путь после успешной сборки. См. Инструкции по перепрошивке устройства .

Эмуляция устройства Android

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

emulator

Устранение распространенных ошибок сборки

Неверная версия 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
************************************************************

Вот вероятные причины и решения:

Python версия 3

Repo построен на определенной функциональности из Python 2.x и несовместим с Python 3. Чтобы использовать Repo, установите Python 2.x:

apt-get install python

Нечувствительная к регистру файловая система

Если вы используете файловую систему HFS в macOS, вы можете столкнуться с такой ошибкой, как:

************************************************************
You are building on a case-insensitive filesystem.
Please move your source tree to a case-sensitive filesystem.
************************************************************

Следуйте инструкциям в разделе Создание образа диска с учетом регистра .

Нет разрешения USB

По умолчанию в большинстве систем Linux непривилегированные пользователи не могут получить доступ к USB-портам. Если вы видите ошибку «Отказано в доступе» , следуйте инструкциям в разделе « Настройка доступа через USB» .

Если [adb] (adb.md) уже запущен и не может подключиться к устройству после установки этих правил, вы можете убить его с помощью adb kill-server . Эта команда заставляет adb перезапуститься с новой конфигурацией.