Cocoa Touch Framework no puede depurar el simulador en el proyecto de inserción

Tengo un framework Cocoa Touch construido con XCode 6 dirigido a iOS> = iOS8. Las configuraciones de architecture de destino de este marco son pnetworkingeterminadas, lo que significa que no he cambiado nada. Las architectures están configuradas como estándar (que no incluye x86_64, más sobre eso más adelante). El marco en sí contiene tanto el código Swift como Objective-C, por lo que buildlo utilizando la solución de biblioteca estática de Ray Wenderlich no funcionará.

Ahora, si creo un nuevo proyecto y le agrego el proyecto marco, el proyecto construye tanto para el dispositivo como para el simulador, lo cual está bien.

Sin embargo, si tomo el file .framework y lo agrego a un proyecto diferente como si agregaras cualquier otro marco, el proyecto no se buildá para el simulador. Bueno, sí construye, pero se cuelga porque no puede encontrar las classs relevantes. Funciona bien en el dispositivo y el file funciona igual de lo esperado también.

El proyecto marco ya me da una advertencia; "Advertencia de Apple Mach-O Linker – Directorio no encontrado para la opción … (Debug-ophoneos)".

¡Cualquier ayuda sería muy apreciada!

Finalmente encontré la solución a este problema. Como resultado, XCode ya no crea binarys gordos fuera de la caja. No tengo idea de qué podría ser el razonamiento de Apple detrás de esto, también a mí me parece que a veces los responsables de XCode gustan de burlarse de los desarrolladores que usan su producto …

De todos modos, puede encontrar la guía definitiva sobre cómo crear un binary gordo para el simulador y todos los dispositivos iOS (sí, incluso tiene que lipo diferentes architectures para get un marco que funcione en dispositivos más nuevos y más antiguos): https: / /kodmunki.wordpress.com/2015/03/04/cocoa-touch-frameworks-for-ios8-remix/

En breve;

  • Crea un Marco de Cocoa Touch
  • Establezca las architectures en arm64, armv7 y armv7s
  • Establezca "Construir architecture activa" en "NO"
  • Establezca "Arquitecturas válidas" en arm64, armv1 y armv7s
  • Agregue el siguiente script al esquema de compilation del marco como una acción posterior del file;

    set -e

    DEVICE_BIN = "$ {OBJROOT} / UninstalledProducts / $ {TARGET_NAME} .framework" SIMULATOR_BIN = "$ {SYMROOT} /../../../../ Productos / Depuración- iphonesimulator / $ {TARGET_NAME} .framework"

    ARCHIVE_PATH = "$ {SRCROOT} / _ Archivo" rm -rf "$ {ARCHIVE_PATH}" mkdir "$ {ARCHIVE_PATH}"

    si ["$ {CONFIGURATION}" = "Release"]; entonces

    si [-d "$ {DEVICE_BIN}"]; entonces DEVICE_PATH = "$ {ARCHIVE_PATH} / Liberar" mkdir "$ {DEVICE_PATH}" cp -r "$ {DEVICE_BIN}" "$ {DEVICE_PATH}" fi si [-d "$ {SIMULATOR_BIN}"]; entonces SIMULATOR_PATH = "$ {ARCHIVE_PATH} / Debug" mkdir "$ {SIMULATOR_PATH}" cp -r "$ {DEVICE_BIN}" "$ {SIMULATOR_PATH}" lipo -crear "$ {DEVICE_BIN} / $ {TARGET_NAME}" "$ { SIMULATOR_BIN} / $ {TARGET_NAME} "-output" $ {SIMULATOR_PATH} / $ {TARGET_NAME} .framework / $ {TARGET_NAME} "

    fi

    fi

    salida 0;

Esto creará un directory _Archive en el directory de su proyecto donde podrá encontrar los frameworks para debugging y lanzamiento.

Importante: a partir de hoy (22 de mayo de 2015) primero deberá build el proyecto con el simulador y luego archivar con un dispositivo. ¡De lo contrario, no obtendrás un binary universal!

Esta publicación ha sido creada para evitar errores de enlaces muertos, para actualizaciones relacionadas con el process de empaquetado, ¡SIEMPRE pruebe los pasos publicados en el website de kodmunki al que he enlazado anteriormente, ya que los pasos de esta publicación podrían haber quedado desactualizados!