Arcore-unity-sdk: Почему мы должны добавлять iOS ARCore SDK при использовании ARKit исключительно на iOS?

Созданный на 13 июн. 2018  ·  13Комментарии  ·  Источник: google-ar/arcore-unity-sdk

У нас есть приложение, которое изначально было сделано для iOS. Теперь клиент хочет портировать его на Android. Все хорошо, мы загружаем этот пакет и снимаем все, что касается iOS. Для этого мы используем собственные хуки ARKit. Однако привязка не удалась, потому что не добавлена ​​структура ARCore для iOS. Почему мы вынуждены использовать это?

Кажется, что плагин Unity ARCore имеет жесткие зависимости от iOS ARCore SDK?

feature request fixed in upcoming release

Самый полезный комментарий

Проблема с iOS заключается в том, что на iOS все статично связано, и, поскольку ARCore обеспечивает поддержку облачной привязки на iOS, потребуется статическое связывание библиотеки ARCore iOS.

Мы уделим этой проблеме первоочередное внимание и решим ее в будущих выпусках. Быть в курсе.

Все 13 Комментарий

Привет, спасибо за отчет. Не могли бы вы немного подробнее объяснить, как настроен ваш проект, цель сборки, в чем ошибка и каково ожидаемое поведение?

Настройка, как я уже упоминал, в первую очередь предназначена для iOS. Поэтому у нас уже есть интеграция с ARKit. Мы используем Jenkins для сборки и распространения. Мы строим из командной строки со следующими аргументами:

-projectPath "${WORKSPACE}/" -buildNumber ${BUILD_NUMBER} -buildtarget ios -quit -batchmode -executeMethod CiBuild.BuildScript.BuildIos -logFile /dev/stdout

Функция BuildIos просто добавляет данные в Info.plist. Теперь эта часть процесса работает нормально, но следующий шаг, который представляет собой сборку Xcode, не удается связать, поскольку он пытается сослаться на такие элементы интеграции ARCore, как эти:

screen shot 2018-06-14 at 14 46 03

Имейте в виду, что у нас не выбрана интеграция и генерация пакетов Cocoapods. Так почему же это все еще происходит на iOS?

Хотя сборка Android работает нормально.

У меня был аналогичный вопрос в #247. Для iOS 11 можно включить библиотеку ARCore в качестве зависимости, но для более ранних версий ARCore вообще не позволит нам скомпилировать приложение.

Я работал над этим, добавляя #if UNITY_ANDROID ко всем файлам ARCore. Не забудьте сохранить сериализованные свойства и поля, чтобы не потерять ссылки и данные при переключении платформ. Было бы здорово, если бы это поддерживалось из коробки :)

Дело в том, что есть варианты не включать и не генерировать подфайл для iOS, но даже если все не проверено, я получаю ошибки компоновщика. Хотелось бы официального ответа по этому поводу.

Можете ли вы, ребята, попробовать изменить «__Internal» на «NOT_AVAILABLE» в этих двух файлах и посмотреть, решит ли это вашу проблему?

У нас такая же проблема. Наше приложение использует ARCore для Android и ARKit для iOS. На устройствах без ARCore/ARKit у нас есть резервный режим. Но с включенным ARCore невозможно скомпилировать для версий iOS SDK ниже 11.0.
Обходной путь, предложенный @Klipi , на мой взгляд, нецелесообразен, так как есть много файлов, которые необходимо изменять после каждого обновления.
Обходной путь, предложенный @bopangzz , кажется лучше, но возможность полностью исключить ARCore из сборок iOS была бы действительно хорошей.
К сожалению, также невозможно переместить папку ARCore в Plugins/Android.
Есть какая-нибудь информация от официальной стороны по этому поводу?

Я должен добавить, что у нас также есть запасное решение для устройств без AR, и поэтому мы ориентируемся на iOS 10.

Также я вижу, что это помечено как «запрос функции», что меня немного беспокоит. Это больше похоже на архитектурную ошибку, чем на предлагаемую функцию. Я надеюсь, что это получит соответствующий приоритет.

Проблема с iOS заключается в том, что на iOS все статично связано, и, поскольку ARCore обеспечивает поддержку облачной привязки на iOS, потребуется статическое связывание библиотеки ARCore iOS.

Мы уделим этой проблеме первоочередное внимание и решим ее в будущих выпусках. Быть в курсе.

@bopangzz фреймворк может быть динамическим. Почему бы вам не упаковать его вот так?

К сожалению, Unity пока не поддерживает динамическую структуру на iOS. Но мы сделали эту проблему приоритетной и сделаем так, чтобы ARCore iOS поддерживала опцию отказа в настройках ARCore в следующем выпуске.

На данный момент вы можете удалить AppDependencies.xml в папке Assets/GoogleARCore/Editor и изменить «__Internal» на «NOT_AVAILABLE» в этих двух файлах, чтобы обойти эту проблему.

Дайте мне знать, если есть другие проблемы, связанные с этой проблемой.

@bopangzz Вы правы, хотя в любом случае структура не добавляется подфайлом позже? В любом случае, неважно - у вас, похоже, все под контролем. Спасибо за оперативную связь и обратную связь!

Спасибо @sebrk , мы оставим его открытым, пока не выпустим для него исправление.

Привет, ARCore SDK для Unity v1.4.0 был выпущен, и теперь вы можете отключить поддержку iOS через Edit->ProjectSettings->ARCore->Поддержка iOS включена.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги