c# xamarin.ios 32bit-64bit ios11 arkit

c# - Error en el proyecto de demostración de Xamarin.iOS ARKit: "las arquitecturas de 32 bits no son compatibles cuando el destino de despliegue es 11 o posterior"



32bit-64bit ios11 (1)

Al implementar el proyecto ARKit Sample desde https://developer.xamarin.com/samples/monotouch/ios11/ARKitSample/ , obtengo el error de compilación Invalid architecture: ARMv7. 32-bit architectures are not supported when deployment target is 11 or later Invalid architecture: ARMv7. 32-bit architectures are not supported when deployment target is 11 or later .

Todo con el dispositivo de implementación y mi máquina de desarrollo se comprueba:

Estoy ejecutando iOS 11 en el dispositivo de implementación (un iPhone 6S Plus - ARKit no se ejecutará en el emulador), y tengo Xcode 9 instalado (y lo he lanzado una vez antes de iniciar Visual Studio para Mac). Visual Studio para Mac también se ha actualizado a la última versión estable (ARKit no está disponible en las versiones Alpha y Beta en este momento).

Estoy publicando la solución a este problema a continuación, con la esperanza de que ayude a otros que van a desarrollar con ARKit en iOS 11.


Estoy compilando el proyecto ARKit en Visual Studio para Mac, por lo que esta solución se ha diseñado para ello:

  1. Conecte su dispositivo a su computadora, y luego selecciónelo como el destino de despliegue en los menús desplegables junto al botón de compilación (el botón que tiene el ícono de flecha de reproducción). Esto es para que los siguientes pasos cambien las opciones para su dispositivo, y no, por ejemplo, el emulador.
  2. Acceda a las opciones de compilación de iOS del proyecto (haga doble clic en el nombre del proyecto o haga clic con el botón derecho en el nombre del proyecto y elija Opciones -> Build -> iOS Build
  3. Asegúrese de que la SDK Version esté configurada en 11.0 (ARKit solo funcionará en iOS 11 y superior)
  4. Establezca el Linker behavior en ''Link Framework SDKs Only'' si aún no está configurado para ese
  5. Establezca las Supported architectures en ARM64 si aún no está configurado para ese
  6. Habilite la opción Perform all 32-bit float operations as 64-bit float.

El paso # 6 fue lo que me solucionó el error de compilación.