probar developer desarrollador cuenta certificacion apple app aplicacion ios xcode4 xcode4.5 xcodebuild

developer - Xcode con iOS: crear una biblioteca de una manera fácil de ejecutar en modo de depuración, distribuir, iterar



desarrollador iphone (3)

Esto es para Xcode 4.5.x iOS armv7 armv7s y para el simulador y específicamente sobre la configuración del proyecto Xcode / configuración del proyecto:

Tengo un proyecto "A" que es una aplicación en la tienda de aplicaciones. Tengo un proyecto "B" que es una biblioteca que se usará en A como una dependencia, pero también se distribuirá como una biblioteca de terceros a otras compañías para usar en sus aplicaciones. (Las aplicaciones de terceros de otras compañías se representan en este caso como "Y").

Aquí están los requisitos:

  • Debe poder ejecutar "A" en modo de depuración y, por supuesto, depurar el proyecto "B" anidado al mismo tiempo, en la misma compilación / sesión.
  • Desde "A", puedo CMD + Haga clic en una firma de método de "B" y vaya directamente a ese archivo src, donde puedo editarlo y luego volver a compilarlo, como si fuera del mismo proyecto.
  • Un desarrollador "X" en otra compañía debe poder arrastrar fácilmente nuestra biblioteca "B" a su proyecto "Y", donde "B" es una biblioteca estática con solo los archivos de encabezado necesarios expuestos. "Y", por supuesto, llama a los métodos de un subconjunto de los archivos de encabezado reales de "B". Solo los archivos de este subconjunto deben incluirse en la distribución de Dev "X".
  • Dev "X" no debería necesitar modificar nada en absoluto en su proyecto Xcode, simplemente arrastre la carpeta de "B" (que contiene la biblioteca estática y el subconjunto de archivos de encabezado) en su proyecto y haga clic en "Copiar recursos, crear referencias, etc. ".
  • Necesito poder generar la compilación de la biblioteca estática de "B" fácilmente, según los mismos archivos que he estado editando todo este tiempo mientras itero y depuro este proyecto "B" dentro de su proyecto dependiente "A".
  • "B" no tiene recursos aparte del código fuente, no hay recursos de imagen, xibs ni nada de eso.
  • Desde "B", hago clic en "Archivar" y Poof! hay una biblioteca estática (debe ser grasa binaria, con eso quiero decir que funciona en el simulador + armv7 + armv7s , por favor !!) con los archivos de encabezado esenciales listos para ser distribuidos.
  • Todo esto debe ser aprobación de la tienda de aplicaciones - amigable
  • También esto debe ser confiable. No es bueno si tengo que volver para realizar muchos cambios de configuración cada vez que agrego un archivo.

ACTUALIZAR:
* MÁS IMPORTANTE : este debe ser un repositorio que pueda ver, es una plantilla completa de lo que estoy buscando, y debo poder abrir Xcode 4.5.2+ y hacer clic en Reproducir para ver esto. cosa construir, sin dolor.

500 puntos para cualquier persona que pueda proporcionarme un proyecto de plantilla que muestre todo lo que he descrito anteriormente, "A", "B" e "Y" (con la biblioteca estática "B" utilizada como dep). Todo lo que necesito es un conjunto de proyectos de esqueleto ("A", "B" (anidado dentro de "A") e "Y") que muestra cómo se puede hacer esto. Por favor, no retengas la respuesta hasta que se publique la recompensa. Si cumple con mis requisitos, me aseguraré de que obtenga mis puntos de recompensa.

Estoy un poco preocupado de que con las limitaciones de Xcode esto ni siquiera es posible de una manera que no sea una molestia completa. Por favor, demuestre que estoy equivocado.

ACTUALIZACIÓN: decidí que ya no me importaba armv6. Adiós, armv6. Crédito adicional si puede obtener armv6 enrollado en la salida dist junto con armv7, armv7s, i386 / simulator.

PD Prometo que seré razonable en la adjudicación de los puntos. No estoy buscando retenerlos en un tecnicismo. Si hace que mi vida sea mucho menos dolorosa en esta área, con mucho gusto le otorgaré los puntos.


Estoy usando https://github.com/jverkoey/iOS-Framework para lograr algo muy similar a sus necesidades. Dale todo el crédito, solo estoy resumiendo cómo lo hago.

Crea una biblioteca estática como de costumbre, más estos ajustes:

  • Agrega una fase de copia de archivos para copiar los encabezados. No uso una fase adecuada de "Copiar encabezados" porque leí en algún lugar que no se recomienda para las bibliotecas estáticas de iOS.
    • Destino: Directorio de productos
    • Subpath: ${PROJECT_NAME}/Headers
  • Cambie algunas configuraciones:
    • "Dead Code Stripping" => No (para todos los ajustes)
    • "Eliminar símbolos de depuración durante la copia" => No (para todos los ajustes)
    • "Estilo de tira" => Símbolos no globales (para todos los ajustes)
  • Agregue un script de ejecución para preparar un marco con la biblioteca:
    • Utilice el script prepare_framework.sh .

Puede usar el proyecto de biblioteca estática en su aplicación: arrástrelo a su proyecto de aplicación, agregue la biblioteca .a como dependencia y vincúlelo. Puede depurar la biblioteca junto con su aplicación, entrar en métodos, navegar a definiciones de símbolos, etc.

El marco preparado se utilizará para distribuir una versión binaria:

En el mismo proyecto de biblioteca estática, agregue un objetivo Agregado:

  • Agregue la librería estática como dependencia.
  • Agregue una fase de secuencia de comandos de ejecución para construir las arquitecturas que faltan. Utilice el script build_framework.sh .

El script adivina cuál es la otra plataforma y usa xcodebuild para compilarlo. Luego usa lipo para crear un binario gordo con todas las arquitecturas. El destino de la biblioteca estática gorda será el árbol marco que creamos anteriormente. El marco final se copia a la carpeta de productos en la carpeta de compilación.

Con este enfoque puedes:

  • Crea y depura tu aplicación con la biblioteca estática como proyecto anidado.
  • Cree una versión distribuible de la biblioteca en un solo paso con los encabezados incrustados en un paquete similar a un marco. El marco de trabajo construido se encuentra en el directorio de productos del proyecto.
  • Utilice la función de Xcode Archive. Por alguna razón, los archivos finales no se copian en la ubicación del archivo. Puedes usarlo para construir una versión reducida del framework.

Siéntase libre de clonar un proyecto usando esta técnica para empaquetar la biblioteca: json-framework fork . He modificado ligeramente los scripts, revise mi bifurcación de iOS-framework .

Con respecto a armv6 , creo que necesita un antiguo iOS SDK 4.3 y agregue manualmente el literal armv6 a la lista de arquitecturas válidas y arquitecturas reales. No tengo y viejo SDK para probarlo ahora.


Cocoapods cubre sus necesidades. Aunque la forma estándar de usarlo es enviar las especificaciones del pod a un repositorio central de git. Admite agregar repositorios alternativos para su distribución o crearlos manualmente, vea here . Las ventajas de usar cocoapods serían que cumple con todos sus requisitos y que se está convirtiendo en una forma muy estándar de distribuir bibliotecas (por ejemplo, utilizadas por compañías como Facebook y stackmob) y de código abierto (por ejemplo, afnetworking). Por lo tanto, si dependes de bibliotecas de terceros ahora o en el futuro, es probable que Cocapodes te ayude a manejar esa dependencia.


Esto no será posible solo en Xcode. Necesitará algunos scripts de compilación (que puede llamar desde Xcode, por supuesto) debido al interruptor de compilación de destino (simulador, dispositivo, etc.).

Creo que tendrá que agregar encabezados de distribución adicionales a un paso de compilación "Copiar archivos" al menos. Pero otras modificaciones no deberían ser necesarias si cambias algo.

Hice algo como esto para libturbojpeg, consulte https://github.com/dunkelstern/libturbojpeg-ios para referencia. Actualmente coloca una biblioteca grande en "lib" si llama al archivo "build.sh" desde el terminal, pero omite los encabezados de distribución. En el caso de libturbojpeg, necesitaba 2 archivos de proyecto porque cada destino compila un subconjunto diferente de archivos de ensamblador en la biblioteca (mejor no mire las cosas del archivo make del ensamblador). Para compilar, necesitarás una versión reciente de NASM, ya que la versión que Apple envía es antigua (obténla con cerveza). Pondré en breve una plantilla para este proyecto de compilación de biblioteca en la misma cuenta. (Se editará o comentará si se hace aquí con los enlaces apropiados)

Basicamente funciona de esta manera:

  1. Cree un script de compilación que llame a xcodebuild para cada destino de plataforma necesario
  2. El proyecto de biblioteca Xcode debe contener un script para colocar las bibliotecas construidas en un directorio que el script de compilación puede encontrar
  3. Los encabezados adicionales deben copiarse mediante una acción de destino "Copiar archivos"
  4. El script de compilación debe combinar todas las compilaciones de la biblioteca con lipo
  5. Agregue el script de compilación como objetivo "Ejecutar guión" a su compilación, pero tenga en cuenta que no crea un bucle infinito (o simplemente llámelo desde el terminal para crear una compilación de lanzamiento)
  6. En su proyecto principal agregue el subproyecto de biblioteca

Luego, puede distribuir el directorio de salida con los archivos de encabezado copiados y la biblioteca universal fusionada de lipo y usar la biblioteca normalmente como un subproyecto en su área de trabajo como lo haría normalmente (construye y vincula solo las librerías necesarias, no la libra universal sino esa). no debería ser problema)

De hecho, esto no resuelve el problema de crear archivos DSYM para la biblioteca. Pero normalmente los símbolos de depuración deberían estar en la propia biblioteca cuando se construye una compilación de depuración. Se eliminarán los símbolos de depuración en la versión de lanzamiento y no tendrá DSYM en ese momento.

Enlace al proyecto de ejemplo: https://github.com/dunkelstern/StaticLibraryTemplate