Проект Unity (Vuforia), интегрированный в проект Android, показывает черный экран при запуске

Моя ситуация:

Я создал приложение для Android и приложение AR Unity, использующее Vuforia 7.0.47. Приложение для Android имеет множество функций, одна из которых - это дополненная реальность, созданная с помощью Unity и Vuforia.

Чтобы легко включить, а затем заменить проект Unity в проект Android, я экспортировал приложение Unity в проект Android Studio и сделал его библиотекой. После этого я добавил файл .aar в свой проект Android.

Кажется, все это работает, поскольку мой проект Android может обнаруживать UnityPlayerActivity и запускать Intent.

Теперь я использую следующий код (обычное намерение) для запуска приложения Unity внутри моего приложения для Android:

Intent intent = new Intent(this, UnityPlayerActivity.class);
startActivity(intent);

У меня проблема:

Всякий раз, когда запускается UnityPlayerActivity, вы видите экран-заставку Unity, за которым следует черный экран вместо камеры, открывающейся для AR.

Однако, когда я собираю проект Unity на свой телефон, все работает нормально, как при его экспорте в проект студии Android и его запуске оттуда.

Проблема возникает только при включении ее в качестве библиотеки в мой существующий проект Android.

Руководства и ссылки, которые я использовал / пробовал

Чтобы создать библиотеку из экспортированного проекта, я следовал следующему руководству: https://medium.com/@davidbeloosesky/embedded-unity-within-android-app-7061f4f473a

Logcat

Это Logcat, который я получаю при запуске Intent

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


person DennisN    schedule 04.04.2018    source источник
comment
В итоге я добавил все необходимые файлы, необходимые Unity, в сам проект Android. Судя по всему, использование его в качестве библиотеки не так хорошо. Всякий раз, когда что-то изменяется в вашем коде Unity, вы просто снова экспортируете проект в проект Android и заменяете папку ресурсов в своем проекте Android на папку из созданного проекта Android.   -  person DennisN    schedule 26.06.2018


Ответы (2)


Вам нужно взять VuforiaWrapper.aar файл из

ЭкспортированныйAndroidStudioProject / libs / VuforiaWrapper.aar

и добавьте его в свое приложение в том же каталоге, где вы добавили файл UnityGame.aar, и добавьте его в gradle как зависимость

 dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation(name: 'UnityGame', ext:'aar')
implementation(name: 'VuforiaWrapper', ext:'aar')}   

Надеюсь, это тебе поможет. Удачи

person MarioAndroid    schedule 31.10.2018
comment
Это действительно помогло. Я импортировал VuforiaWrapper как модуль и добавил в settings.graddle, как include ':app', 'VuforiaWrapper' - person nipunasudha; 05.11.2018
comment
да, даже это работает, я реализовал таким образом awsell, любой из них выполняет свою работу - person MarioAndroid; 27.11.2018
comment
У меня вроде не работает, у меня все есть. Под vuforiaWrapper подразумевается случайное имя для экспортированного vuforia.arr, если оно то одно, у меня это не работает - person Idris Stack; 06.08.2020
comment
Получаю эту ошибку: AndroidJavaException: java.lang.ClassNotFoundException: com.vuforia.VuforiaUnityPlayer.VuforiaInitializer java.lang.ClassNotFoundException: com.vuforia.VuforiaUnityPlayer.VuforiaInitializer - person Idris Stack; 06.08.2020

Как уже упоминалось, вы должны добавить VuforiaWrapper.aar

Но иногда вам придется добавить зависимость как

implementation project(':VuforiaWrapper')
implementation fileTree(dir: 'libs', include: ['*.jar'])
person Ritz    schedule 14.11.2018