Проект, обновленный с Google Cardboard до Google VR, выполняется в Unity, но не выполняется при сборке для iOS (XCode или Unity Cloud Build)

Я начал свой проект с использованием Google Cardboard, а затем импортировал новый пакет GoogleVR, чтобы заменить его. Когда я нажимаю Play в Unity, мой проект работает нормально, но когда я пытаюсь собрать его для iOS, я получаю ошибки как в проекте Xcode, так и в проекте сборки Unity Cloud.

На Xcode:

ld: warning: arm64 function not 4-byte aligned: ltmp0 from /Users/gamedev/Desktop/VR1-iOS/Libraries/libiPhone-lib.a(unwind_test_arm64.o)
 ld: warning: arm64 function not 4-byte aligned: _unwind_tester from /Users/gamedev/Desktop/VR1-iOS/Libraries/libiPhone-lib.a(unwind_test_arm64.o)
 Undefined symbols for architecture arm64:
   "_endSettingsDialog", referenced from:
       -[DismissDialogViewController viewDidAppear:] in libvrunity.a(unity.o)
 ld: symbol(s) not found for architecture arm64
 clang: error: linker command failed with exit code 1 (use -v to see invocation)

на сборке облака Unity:

[xcode] Undefined symbols for architecture armv7:
 9352:        [xcode]   "_endSettingsDialog", referenced from:
 9353:        [xcode]       -[DismissDialogViewController viewDidAppear:] in libvrunity.a(unity.o)
 9354:        [xcode]   "_isOpenGLAPI", referenced from:
 9355:        [xcode]       RegisterMonoModules() in RegisterMonoModules.o
 9356:        [xcode] ld: symbol(s) not found for architecture armv7
 9357:        [xcode] clang: error: linker command failed with exit code 1 (use -v to see invocation)
 9358:        [xcode] Showing first 200 warnings only
 9359:        [xcode] ** ARCHIVE FAILED **
 9360:        [xcode] The following build commands failed:
 9361:        [xcode]     Ld /BUILD_PATH/Library/Developer/Xcode/DerivedData/Unity-iPhone-gccgnjkpqhormzcosgksevxlzeea/Build/Intermediates/ArchiveIntermediates/Unity-iPhone/InstallationBuildProductsLocation/APPLICATION_PATH/vr1.app/vr1 normal armv7
 9362:        [xcode] (1 failure)

Я заметил, что большинство ответов на подобные проблемы относятся к SourceTree (это то, что я использую), игнорируя файл.dll при нажатии на исходный код. На данный момент у меня нет файла.gitignore в моей рабочей директории.

ОБНОВЛЕНИЕ Я обновился до Unity 5.6, и ошибки немного изменились:

"_endSettingsDialog", referenced from:
-[DismissDialogViewController viewDidAppear:] in libvrunity.a(unity.o)

Undefined symbols for architecture arm64:
  "_isOpenGLAPI", referenced from:
      _iOSDevice_isOpenGLAPI_m3529398287 in Bulk_Assembly-CSharp_0.o
     (maybe you meant: _iOSDevice_isOpenGLAPI_m3529398287)
ld: symbol(s) not found for architecture arm64

при проверке между связанными библиотеками (в настройках сборки) я заметил, что у меня были оба libvrunity.a а также libgvrunity.a поэтому я удалил первый, и ошибка исчезла, но у меня все еще есть второй об OpenGL. Странно то, что проект работает в единстве без нареканий.

2 ответа

Решение

Видимо, все дело в Google VR SDK. Текущая версия 1.30 не поддерживает родную iOS в Unity 5.6.

У них единственный способ решить это было:

  • Удаление плагина GoogleVR (и всех ссылок на него) в моем проекте
  • Замена отслеживания вида GazeVR на простую Raycasting, чтобы активировать определенные методы для объекта, на который смотрит пользователь
  • Активация виртуального режима в "Настройках здания" при экспорте в iOS
  • Удаление libvrunity.a а также libgvrunity.a библиотеки из проекта XCode
  • Обеспечение поддержки битового кода установлено на NO
  • Импортируем GoogleVR как cocoapod.

К сожалению, эта процедура не позволяет мне отображать Stereo View в редакторе Unity.

Нам нужно дождаться обновления 1.40. Я уже открыл вопрос о репозитории GoogleVR GitHub.

Кажется, у вас отсутствуют файлы или какой-то старый не удален: я бы предложил удалить все плагины iOS и повторно импортировать правильные.

Другие вопросы по тегам