frameworks xcodebuild fat bitcode xcode7.3

frameworks - xcodebuild 7.3 no puede habilitar bitcode



fat xcode7.3 (2)

Estoy desarrollando un marco embebido para iOS. Para hacer una grasa universal (con simuladores y divisiones de dispositivos), creé un objetivo agregado con una secuencia de comandos que usa los comandos xcodebuild y lipo para generarlo, como hacen muchas personas.

Con XCode 7.x tuve que agregar una configuración definida por el usuario con BITCODE_GENERATION_MODE = bitcode para habilitarlo, pero esto ha dejado de funcionar desde la última versión de XCode 7.3.

He intentado todo lo que encontré en Internet, como add OTHER_CFLAGS="-fembed-bitcode" , pero todo funciona igual que antes ...

Lo he visto en el registro de compilación:

ENABLE_BITCODE siempre es NO, no importa.

¿Alguien ha tratado de crear un framework universal gordo con bitcode habilitado usando el comando xcodebuild desde XCode 7.3?


Estoy enfrentando el mismo problema. Al igual que usted, BITCODE_GENERATION_MODE y OTHER_CFLAGS="-fembed-bitcode" simplemente se ignoran, y mis compilaciones se rompieron

Me di cuenta de que a veces funciona, y a veces no funciona. Parece que si construyes el marco (o agregas el objetivo) para el simulador, el código de bits desaparece, sin importar lo que tengas en los comandos de xcodebuild.

Estoy usando Xcode 7.3, y tengo 2 objetivos: biblioteca estática y objetivo agregado para hacer el marco gordo.

Lo que funciona para mí cuando se construye un marco sin código de bits, es:

  • Seleccione el objetivo de la biblioteca estática (no el agregado) y elija "Dispositivo iOS genérico"
  • Límpialo
  • Seleccione el objetivo de la biblioteca estática, pero elija un simulador
  • Build it (funciona, incluso si es instantáneo porque no se ha limpiado)
  • Seleccione el objetivo de la biblioteca estática, pero elija "Dispositivo iOS genérico" nuevamente.
  • Constrúyelo
  • Seleccione el objetivo agregado para un "dispositivo iOS genérico"
  • Finalmente, construirlo
  • Si esto falló, comienza de nuevo. A veces necesito hacerlo dos o tres veces antes de que funcione.

Cuando hago eso, mi biblioteca gorda termina teniendo bitcode.

Puede verificar que su marco tenga soporte de código de bits fácilmente ejecutando otool -arch armv7 -l <framework_path> | grep LLVM otool -arch armv7 -l <framework_path> | grep LLVM

Para romperlo nuevamente, simplemente construya el objetivo agregado para un simulador. La biblioteca seguirá siendo una grasa, pero el código de bits se ha ido.

Alguien seguramente puede encontrar una solución que funcione siempre, pero al menos me soluciona el problema.

Ciertamente no tuve que hacer eso con Xcode 7.2, y no sé cómo funciona eso para compilaciones CLI puras.


Me encontré con un problema similar ayer. Después de algunas investigaciones, el problema que aparece al ejecutar xcodebuild desde una fase de compilación "Ejecutar script" en cualquier objetivo de Xcode, parece estar relacionado con la especificación explícita de la cadena de herramientas que se utilizará, realizada con la variable ENV TOOLCHAINS .

Por lo tanto, hasta que Apple publique una versión fija de Xcode 7.3, puede intentar agregar el siguiente comando al comienzo de su script:

# workaround for bitcode generation problem with Xcode 7.3 unset TOOLCHAINS

Esto debería ser inofensivo, ya que esta variable env no está configurada de manera predeterminada cuando ejecuta xcodebuild desde la línea de comandos, y esta solución alternativa funciona bien en mi caso.