Проект, обновленный с 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 и повторно импортировать правильные.