Unity 6.3
0 онлайн 77 гостей 3 в системе
Вход

Устранение неполадок в сборки Gradle для Android

При сборке проекта Android с помощью Gradle могут возникать ошибки сборки, особенно если используются дополнительные библиотеки Android или пользовательская библиотека AndroidManifest.xml. Gradle рассматривает некоторые проблемы как ошибки и останавливает процесс сборки. К ним относятся дублирующиеся символы, ссылки на несуществующие ресурсы или проект библиотеки, устанавливающий тот же атрибут, что и основное приложение.

Большинство этих проблем можно решить путем редактирования файла AndroidManifest.xml, либо главного файла манифеста приложения, либо файла в библиотеке, используемой вашим проектом.

В следующих разделах описаны типичные ошибки сборки Gradle и способы их устранения.

Если у вас возникли какие-либо проблемы, не охваченные этими разделами, экспортируйте свой проект Android в качестве проекта Gradle и создайте его из командной строки. Создание из командной строки обеспечивает подробные сообщения об ошибках и помогает быстрее диагностировать сложные проблемы.

Отсутствующий ресурс, указанный в манифесте

Файл AndroidManifest.xml, будь то основной файл манифеста приложения или файл в библиотеке, ссылается на ресурс, например значок приложения или строку метки, который не существует в вашем проекте.

Симптомы

Сборка завершается с сообщением об ошибке, указывающим на несуществующий ресурс, указанный в файле AndroidManifest.xml.

Причина

Это может произойти при копировании главного манифеста в проект библиотеки без удаления ссылок на ресурсы.

Резолюция

Чтобы устранить ошибку отсутствия ресурса, выполните следующие действия.

  1. Откройте файл AndroidManifest.xml и найдите атрибут, который ссылается на отсутствующий ресурс.
  2. Удалите атрибут из одного из файлов манифеста Android, обычно из файла библиотеки.

Минимальная версия SDK, заявленная в манифесте

Атрибут android:minSdkVersion объявляется в файле AndroidManifest.xml, а не в файле build.gradle. Это может происходить в главном манифесте или в манифестах каталога библиотеки Android. Это не относится к плагинам aar.

Симптомы

Сборка завершается с ошибкой, указывающей, что android:minSdkVersion объявлен в файле манифеста.

Причина

Сборки Android требуют определения минимальной версии SDK в файле build.gradle, а не в файле манифеста. Сборка завершается неудачей, если элемент <uses-sdk> остается в главном манифесте или в манифесте каталога библиотеки.

Резолюция

Чтобы устранить эту проблему, выполните следующие действия:

  1. Откройте главный файл манифеста AndroidManifest.xml.
  2. Удалите элемент <uses-sdk android:minSdkVersion> из манифеста.
  3. Проверьте манифесты в каталогах библиотек на элемент и удалите его, если он присутствует.
  4. Укажите минимальную версию SDK в файле build.gradle.

Примечание. Если вы не используете пользовательский шаблон Gradle, Unity автоматически обрабатывает minSdkVersion. Если вы используете пользовательский шаблон Gradle, убедитесь, что вы указали minSdkVersion в разделе defaultConfig шаблона.

Дублирование имен файлов в APK

Одно и то же имя файла существует в нескольких местах, либо в основном приложении и библиотеке, либо в нескольких библиотеках.

Симптомы

Ошибка сборки, указывающая на дублирующие имена файлов.

Причина

Процесс сборки копирует все файлы в один и тот же пакет APK. Поэтому любые дублирующиеся имена файлов вызывают сбой сборки.

Резолюция

Чтобы решить проблему дублирования имен файлов, удалите дублирующий файл из одного из расположений.

Несколько библиотек, использующих одно и то же имя пакета

Библиотека использует то же имя пакета Java, что и основное приложение или другая библиотека.

Симптомы

Сборка завершается с сообщением об ошибке, указывающим на конфликт имен пакетов Java.

Причина

Gradle не позволяет использовать одно и то же имя пакета Java в основном приложении и библиотеке или в нескольких библиотеках.

Резолюция

Чтобы разрешить конфликт между именами пакетов, выполните следующие действия.

  1. Определите библиотеку с конфликтующим именем пакета из ошибки сборки.
  2. Переименуйте пакет библиотеки в что-то уникальное. Если библиотека содержит значительный код, переименуйте пакет через Настройки Игрока > Android > Package Name.

Конфликтующие атрибуты манифеста

Библиотека пытается переопределить атрибуты из основного AndroidManifest.xml файл, например, значок приложения или строка метки.

Симптомы

Ошибка сборки, указывающая на конфликт атрибутов во время процесса сборки.

Причина

Библиотека пытается переопределить атрибуты из основного AndroidManifest.xml файл, вызывающий конфликт слияния во время процесса сборки.

Резолюция

Для разрешения конфликта атрибутов используйте один из следующих способов:

  • Удалите конфликтующий атрибут из файла манифеста библиотеки Android.
  • Добавьте атрибут tools:replace в тег приложения, чтобы указать, как Gradle должен разрешить конфликт слияния.

Дополнительные ресурсы