tipos librerias libreria dinamicas crear como clases objective-c ios

objective c - librerias - La mejor práctica para dependencias de bibliotecas estáticas



librerias de c (3)

Podría usar un administrador de dependencias como CocoaPods o VendorKit para obtener la biblioteca requerida, así como todas sus dependencias transitivas, bibliotecas de las que depende la biblioteca.

Es el trabajo del administrador de dependencias administrar los conflictos en las dependencias transitivas; por ejemplo, si dos bibliotecas usan versiones diferentes de SBJSON, resolverá qué hacer. Todo lo que tiene que hacer es declarar la biblioteca de nivel superior que desea en un archivo de configuración y esto determinará qué sub-bibliotecas son necesarias y las incluirá en su Proyecto Xcode.

CocoaPods tiene una buena forma de administrar esto al juntar todas las bibliotecas como fuente y luego compilarlas todas en una sola biblioteca estática, en un proyecto separado. Esto se vincula a su proyecto a través de un área de trabajo.

VendorKit adopta un enfoque similar, pero usa un solo archivo de proyecto.

Tanto CocoaPods como VendorKit le permiten publicar fácilmente su biblioteca en un repositorio central. CocoaPods le permite mantener su propia bifurcación privada o pública del repositorio central, si lo desea, es decir, como un repositorio empresarial.

La mayoría de las veces esto te sacará de problemas. En raras ocasiones, su biblioteca puede depender de una versión anterior muy específica de otra biblioteca común. En este caso, podría usar una herramienta para cambiar el nombre de todos los archivos de encabezado / impl en esa biblioteca para evitar colisiones.

[Editar]: a partir de enero de 2013 también hay un nuevo contendiente: el complemento Maven Xcode.

Estoy escribiendo una biblioteca estática que depende de otras bibliotecas (en mi caso, SBJSON y ASIHTTPRequest).

Si compilo estas dependencias externas en mi biblioteca, entonces no puedo vincularlas con otras bibliotecas que tienen estas clases compiladas. Como mi objetivo es crear un conjunto de bibliotecas estáticas para mi compañía que se puedan importar a cualquier aplicación nueva, compile estas las dependencias en la biblioteca obviamente no son una opción.

¿Alguien tiene algún consejo / mejores prácticas para crear un conjunto de bibliotecas estáticas compartidas con dependencias comunes?


Una biblioteca estática es solo una colección de archivos de objetos. En su caso, no desea que los archivos de objetos para SBJSON y ASIHTTPRequest se incluyan en su biblioteca estática; desea dejar ese trabajo a la aplicación final. Lo único que su biblioteca estática necesita son los archivos de encabezado para SBJSON y ASIHTTPRequest.

Ya que estos proyectos se distribuyen como archivos de origen (archivos .h y .m), solo necesita decirle a Xcode que no genere los archivos .m SBJSON / ASIHTTPRequest para su destino de biblioteca estática.

La forma más fácil de hacer esto es importar solo los archivos de encabezado .h para estos proyectos en su proyecto Xcode. Alternativamente, puede importar los archivos .h y .m, pero asegúrese de que los archivos .m no estén incluidos en la fase de compilación "Orígenes de compilación" de su destino de biblioteca estática

Algunos otros temas SO relevantes:

¿Cómo puedo evitar los errores de "símbolo duplicado" en xcode con bibliotecas estáticas compartidas?

Símbolo duplicado: incluya la biblioteca estática A en la biblioteca estática B, también incluya las letras A y B en el proyecto XCode


Crear un marco estático para cada biblioteca. Documentar las dependencias en archivos de cabecera.

[Editar]: ahora prefiero usar Cocoapods. Ver https://.com/a/10781087/9636