Google is committed to advancing racial equity for Black communities. See how.
Эта страница переведена с помощью Cloud Translation API.
Switch to English

Сборка Android

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

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

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

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

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

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

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

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

тапас

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

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

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

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

Постройте все с помощью m . m может обрабатывать параллельные задачи с аргументом -jN . Если вы не -j аргумент -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

Чтобы прошить устройство, используйте 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
************************************************************

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

  • Неспособность установить правильный JDK, как указано в требованиях JDK . Убедитесь, что вы выполнили действия, указанные в разделах «Настройка среды» и « Выбор цели» .
  • Другой ранее установленный JDK появится на вашем пути. Добавьте правильный JDK в начало пути или удалите проблемный JDK.

Файловая система без учета регистра

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