Ошибка сборки Unity: отсутствует ключевой атрибут ‘package’ в пакете элементов в [: arcore_client:] AndroidManifest.xml:30:9-54

#android #unity3d #gradle #build

#Android #unity3d #arcore

Вопрос:

я использую пакет предварительного просмотра ARFoundation 4.1.0, и в управлении плагинами XR в настройках проекта Unity я включил Arcore, но проблема в том, что при сборке он выдает мне «Отсутствующий ключевой атрибут ‘package’ в пакете элементов в [: arcore_client:] AndroidManifest.xml:30:9-54». и когда я отключаю Arcore, он работает нормально, но я получаю камеру с черным экраном.

Ответ №1:

У меня аналогичный вопрос с вами, но я использовал ARCore SDK.

Эта проблема возникает при сочетании:

  • Использование API-интерфейса Android-SDK 31-го уровня (или более поздней версии),
  • Со старыми версиями Gradle.

По сути, обновления инструментов сборки до 31 недостаточно для поддержки queries элемента (из манифеста, добавленного с Android 11 ). Gradle также нуждается в обновлении.

Я решил это, изменив Gradle-plugin в моем assets--plugins--android--mainTemplate.gradle файле с 3.4.0 на 3.6.0 , например:

 dependencies {
  classpath 'com.android.tools.build:gradle:3.6.0'
}
  

возможно, вам потребуется установить флажок «Customer Gradle Templete» в настройках проигрывателя-настройка публикации-сборка, чтобы создать этот файл

Ответ №2:

я решил это, вернувшись с ar foundation preview 10 4.1.0 на preview-2

Ответ №3:

Это связано с проблемой конфигурации файла gradle. Вам необходимо вручную внести некоторые изменения в пользовательские файлы gradle в версиях Unity 3D 2019 .

  1. Go to Preferences > External Tools > Android > Gradle и установите для пользовательского Gradle значение Gradle 5.6.4 или более поздней версии. Если он у вас уже есть, пропустите этот шаг.

    введите описание изображения здесь

  2. Go to Project Settings > Player > Android tab > Publishing Settings > Build и выберите оба:

    Пользовательский основной шаблон Gradle

    Пользовательский шаблон запуска.

    введите описание изображения здесь

  3. Примените следующие изменения к обоим сгенерированным файлам:

    Ресурсы / Плагины / Android/mainTemplate.gradle

    Ресурсы / Плагины / Android/launcherTemplate.gradle

    Если присутствует, удалите следующий комментарий в верхней части файла:

    // СГЕНЕРИРОВАН UNITY. УДАЛИТЕ ЭТОТ КОММЕНТАРИЙ, ЧТОБЫ ПРЕДОТВРАТИТЬ ПЕРЕЗАПИСЬ ПРИ ПОВТОРНОМ ЭКСПОРТЕ

Вставьте следующие строки в начало файла:

 buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.0'
    }
}

allprojects {
   repositories {
      google()
      jcenter()
      flatDir {
        dirs 'libs'
      }
   }
}
  

Ответ №4:

  1. Найдите версию Gradle, которую использует ваша версия Unity, отсюда.

  2. Затем найдите последнюю версию плагина Gradle, совместимую с версией Gradle, найденной на первом шаге отсюда.

  3. В разделе «Настройки публикации» в настройках проигрывателя установите Custom Gradle Template флажок. Затем Unity генерирует mainTemplate.gradle файл по умолчанию в Assets/Plugins/Android/ папке.

  4. В mainTemplate.gradle файле обновите версию com.android.tools.build:gradle плагина до более новой версии, найденной на шаге 2.