iphone static-libraries xib

¿Puedes hacer referencia a archivos Xib desde bibliotecas estáticas en el iPhone?



static-libraries (5)

Al distribuir, también puedes crear un SDK. JSON.framework hizo esto en su SVN, y lo repliqué con éxito. Puede ver cómo se hizo esto en http://hltypes.svn.sf.net/ en hltypes-ios.xcodeproj y en la carpeta iOS del proyecto.

Principalmente debe "instalar" en su carpeta de compilación, y luego debe copiar el SDKSettings.plist especialmente formateado. A continuación, agregue la ruta al SDK en la lista "SDK adicionales" en el proyecto de la aplicación. La desventaja de los SDK compuestos es la necesidad de reiniciar Xcode 3.x siempre que se actualice este mini-SDK, y la insistencia de Xcode en construir un SDK compuesto creado a partir del SDK base de Apple y su mini-SDK (lo que significa que necesita esperar bastante) .

El proyecto de aplicación aún necesita agregar .xib y otros recursos manualmente.

En mi aplicación, actualmente tengo todo mi código separado en una biblioteca estática, para facilitar la configuración de los objetivos del proyecto xcode para la aplicación real y para las pruebas unitarias de mi código. El problema con esto es que quiero poner también la mayoría de mis archivos xib en la biblioteca estática, pero parece que cuando ejecuto mi aplicación e intento hacer referencia al xib, no puedo encontrarlo a menos que esté incluido en el archivo real. objetivo de la aplicación en lugar del objetivo de la biblioteca estática. ¿Es posible tener archivos xib y otros recursos incluidos en las bibliotecas estáticas a los que se puede hacer referencia mediante código en esa misma biblioteca y, de ser así, cómo?



No, no es posible, porque una biblioteca estática no es lo mismo que un "paquete".

Un paquete es un directorio que puede contener todo tipo de archivos, incluidos los archivos de recursos (xib), archivos ejecutables y bibliotecas estáticas. Existe en el sistema de archivos como un grupo de archivos individuales.

Una biblioteca estática es un único archivo que contiene clases, códigos y variables que fueron vinculados entre sí por el creador de la biblioteca. No "contiene" otros archivos, es esencialmente una base de datos de código compilado.

Aunque sería posible poner los datos para los xibs allí, Xcode no tendría forma de saber que estaba ahí, ya que los busca como archivos individuales en el sistema de archivos.

En Mac OS, puede crear un "Framework" que es esencialmente un paquete de código, recursos, configuraciones, etc. que pueden ser reutilizados por múltiples proyectos. Sin embargo, Apple no parece ser compatible con la creación de marcos personalizados para iPhone OS.

Bundles https://developer.apple.com/library/content/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW1

Bibliotecas estáticas http://en.wikipedia.org/wiki/Static_library


Responder para comentar (no cabe en el cuadro de comentarios)

No se preocupe, he estado tratando de hacer casi lo mismo que usted durante la última semana. Me gustaría enviar un "marco" de xibs, incluir archivos y .a libs a un cliente sin darles toda la fuente código. No pude encontrar una buena manera de hacer esto con los paquetes tampoco.

Por alguna razón, Apple está siendo especialmente obtuso con respecto a esto; no veo razón para que lo sean en el caso de las bibliotecas estáticas (las bibliotecas dinámicas son lo suficientemente justas).

Mi solución por ahora es crear manualmente una carpeta de paquete "Foo" que contenga las siguientes subcarpetas:

  1. "incluir" -> poner archivos .h aquí
  2. "res" -> poner archivos .xib aquí
  3. "lib" -> contiene subcarpetas "iphoneos" e "iphonesimulator" cada una con libFoo.a

Luego comprime esto y envíalo al cliente. El cliente entonces:

  1. Descomprime el paquete donde lo desee.
  2. Agrega la carpeta "res" debajo del grupo de recursos.
  3. Cambia las siguientes configuraciones de objetivos:
    Otros indicadores de enlazador = -Objc -lfoo
    Rutas de búsqueda de encabezado = / include
    Rutas de búsqueda de bibliotecas = / lib / $ (PLATFORM_NAME)

Probablemente pueda automatizar la creación del paquete con algunos pasos de compilación al final, pero el cliente tiene cuatro pasos poco complicados para configurarlo.


Sí tu puedes. agregue un archivo xib en su biblioteca como lo haría con cualquier proyecto normal. Luego, en el objetivo del proyecto de la biblioteca, agregue el archivo xib en la sección Copiar archivos junto con el archivo .a. En su proyecto principal donde está utilizando la biblioteca, arrastre y suelte el archivo xib donde se encuentra el archivo .a para la biblioteca.