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