Arcore-unity-sdk: ¿Por qué debemos agregar iOS ARCore SDK cuando usamos ARKit exclusivamente en iOS?

Creado en 13 jun. 2018  ·  13Comentarios  ·  Fuente: google-ar/arcore-unity-sdk

Tenemos una aplicación que se creó originalmente para iOS. Ahora el cliente quiere portarlo a Android. Bien, descargamos este paquete y deseleccionamos todo lo referente a iOS. Usamos nuestros propios ganchos ARKit para eso. Sin embargo, la vinculación falla porque no se agregó el marco ARCore para iOS. ¿Por qué estamos obligados a usar esto?

¿Parece que el complemento Unity ARCore tiene fuertes dependencias con el SDK de iOS ARCore?

feature request fixed in upcoming release

Comentario más útil

El problema con iOS es que todo está vinculado de forma estática en iOS y dado que ARCore brinda soporte de anclaje en la nube en iOS, deberá vincular de forma estática la biblioteca de iOS de ARCore.

Daremos prioridad a este problema y lo resolveremos en futuras versiones. Manténganse al tanto.

Todos 13 comentarios

Hola, gracias por el informe. ¿Podría explicar un poco más cuál es la configuración de su proyecto, su objetivo de compilación, cuál es el error y cuál habría sido el comportamiento esperado?

La configuración es, como mencioné, hecha primero para iOS. Por lo tanto, ya tenemos una integración ARKit en ejecución. Usamos Jenkins para construir y distribuir. Estamos construyendo desde la línea de comando con los siguientes argumentos:

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

La función BuildIos simplemente agrega cosas a Info.plist. Ahora, esta parte del proceso funciona bien, pero el siguiente paso, que es la compilación de Xcode, falla al vincularse, ya que está tratando de hacer referencia a elementos de integración de ARCore como estos:

screen shot 2018-06-14 at 14 46 03

Eso sí, disponemos de integración y generación de paquetes Cocoapods sin seleccionar. Entonces, ¿por qué sigue sucediendo esto en iOS?

Sin embargo, la compilación de Android funciona bien.

Tuve una pregunta similar en el n. ° 247. Para iOS 11, es posible incluir la biblioteca ARCore como una dependencia, pero para versiones anteriores, ARCore evitará que compilemos la aplicación.

Lo solucioné agregando #if UNITY_ANDROID a todos los archivos ARCore. Asegúrese de mantener las propiedades y los campos serializados en su lugar para no perder referencias ni datos al cambiar de plataforma. Sería genial si esto fuera compatible desde el primer momento :)

La cosa es que hay opciones para no incluir y generar podfile para iOS, pero incluso con todo sin marcar, obtengo los errores del enlazador. Me encantaría una respuesta oficial sobre esto.

¿Pueden intentar cambiar "__Internal" a "NOT_AVAILABLE" en estos dos archivos y ver si eso resuelve su problema?

Tenemos el mismo problema. Nuestra aplicación utiliza ARCore para Android y ARKit para iOS. En dispositivos sin ARCore/ARKit, tenemos un modo alternativo. Pero con ARCore incluido, no es posible compilar para versiones SDK de iOS inferiores a 11.0
En mi opinión, la solución alternativa sugerida por @Klipi no es practicable, ya que hay muchos archivos que deben cambiarse después de cada actualización.
La solución alternativa sugerida por @bopangzz parece ser mejor, pero una opción para excluir completamente ARCore de iOS Builds sería realmente buena.
Lamentablemente, tampoco es posible mover la carpeta ARCore a Complementos/Android.
¿Alguna información del lado oficial sobre este tema?

Debo agregar que también tenemos una solución alternativa para dispositivos que no son AR y, por lo tanto, apuntamos a iOS 10.

También veo que esto está etiquetado como una "solicitud de función", lo que me preocupa un poco. Esto parece más un error arquitectónico que una característica propuesta. Espero que esto se priorice en consecuencia.

El problema con iOS es que todo está vinculado de forma estática en iOS y dado que ARCore brinda soporte de anclaje en la nube en iOS, deberá vincular de forma estática la biblioteca de iOS de ARCore.

Daremos prioridad a este problema y lo resolveremos en futuras versiones. Manténganse al tanto.

@bopangzz un marco puede ser dinámico. ¿Por qué no lo empaquetas así en su lugar?

Desafortunadamente, Unity aún no es compatible con el marco dinámico en iOS. Pero hemos priorizado este problema y haremos que ARCore iOS admita una opción de suscripción en la configuración de ARCore en la próxima versión.

Por ahora, puede eliminar AppDependencies.xml en la carpeta Assets/GoogleARCore/Editor y cambiar "__Internal" a "NOT_AVAILABLE" en estos dos archivos para solucionar este problema.

Avíseme si hay otros problemas con respecto a este problema.

@bopangzz Tiene razón, aunque ¿el marco no se agrega más adelante con un podfile de todos modos? De todos modos, no importa, parece que tienes esto bajo control. ¡Gracias por la comunicación y los comentarios rápidos!

Gracias @sebrk , lo mantendremos abierto hasta que publiquemos una solución.

Hola, se lanzó ARCore SDK para Unity v1.4.0 y ahora puede deshabilitar la compatibilidad con iOS a través de Edit->ProjectSettings->ARCore-> iOS support disabled.

¿Fue útil esta página
0 / 5 - 0 calificaciones