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?¿Puede hacer referencia a archivos Xib desde bibliotecas estáticas en el iPhone?
Respuesta
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 las clases, el código y las variables que el creador de la biblioteca ha vinculado entre sí. 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 allí, 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.
bibliotecas estáticas http://en.wikipedia.org/wiki/Static_library
Responder al comentario (no cabrá en la caja de comentario)
No se preocupe, yo he estado tratando de hacer más o menos lo mismo como usted durante la última semana, me gustaría enviar un "marco" de xibs, incluir archivos y .a libs a un cliente sin darles todo el código fuente. No pude encontrar una buena manera de hacer esto con los paquetes tampoco.
Por alguna razón, Apple es particularmente obtuso con esto, no veo una razón para que lo sean en el caso de las bibliotecas estáticas (las bibliotecas dinámicas son suficientes).
Mi solución por ahora es crear manualmente una carpeta del paquete de "Foo", que contiene las siguientes subcarpetas:
- "incluir" -> poner .h archivos aquí
- "res" -> puestas. archivos xib aquí
- "lib" -> contiene & subcarpetas "iPhoneOS" "" iphonesimulator cada uno con libfoo.a
Entonces zip esto y envían al cliente. El cliente entonces:
- Descomprime el paquete cuando lo desee.
- Agrega la carpeta "res" al grupo de recursos.
- Cambia los ajustes siguientes objetivos:
Otras banderas Linker = -ObjC -lfoo
de cabecera de rutas de búsqueda =/
incluir Biblioteca de rutas de búsqueda =/lib/$ (PLATFORM_NAME)
es probable que pueda automatizo la creación del paquete con algunos pasos de compilación en mi extremo, pero el cliente tiene cuatro pasos poco complicados para configurarlo.
¿Puede explicar qué hace el marcador -lfoo linker? No estoy seguro de cómo el compilador procesa esto. ¡Gracias! – jpswain
'-lfoo 'es solo la bandera del enlazador para" enlace a la biblioteca foo'. Consulte http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html. Envíe por favor si ha encontrado útil esta respuesta. – Justicle
Ok , por lo tanto, es solo por convención? Por ejemplo, si mi lib está en el paquete "Thingy", y mi archivo de salida es "libThingy.a", entonces mi bandera linker sería "-lthingy"? ¿Es correcto? También tiene "- Objc "- ¿no se supone que es" -ObjC "? Gracias! +1 – jpswain
Al distribuir también puede 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 de iOS en el 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 la aplicación aún necesita tener .xib y otros recursos agregados manualmente.
he encontrado una solución perfecta para este que hace todo lo anterior de forma automática y más https://github.com/kstenerud/iOS-Universal-Framework Es un plug-in xCode
A mí me funcionó a las mil maravillas, Funciona sólo para XCode 4 y superior
Sí, 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 en el que está utilizando la biblioteca, arrastre y suelte el archivo xib donde se encuentra el archivo .a para la biblioteca.
Estás el único que está apoyando eso. Se puede hacer. Intenté con toda la solución, pero a mí no me funciona para nada. Y solo porque tienes la suficiente confianza, estoy tratando de hacerlo con más fuerza. ¿Puedes ayudarme con el pasos. Estoy cansado de experimentar. –
Estoy secundando la solicitud de @ Rudeboy. ¿Lo intentaste realmente o simplemente estás asumiendo que debería funcionar? – Drux
- 1. Problema al utilizar archivos xib en bibliotecas
- 2. iPhone - Bibliotecas estáticas, propósito de "Copiar encabezados"?
- 3. Vinculación a bibliotecas estáticas
- 4. bibliotecas estáticas
- 5. iPhone de localización de archivos xib
- 6. Subversion (SVN) y bibliotecas estáticas (.a archivos) compatibilidad?
- 7. Combinar bibliotecas estáticas
- 8. Vinculación de bibliotecas estáticas en iPhone SDK 3.0
- 9. Cómo referenciar archivos XIB de un XIB principal
- 10. Hacer referencia a los métodos de AppDelegate - iphone
- 11. El equivalente .NET de bibliotecas estáticas?
- 12. Convertir archivos NIB a archivos XIB
- 13. ctypes para bibliotecas estáticas?
- 14. fusionar bibliotecas estáticas en una sola
- 15. Vinculación de bibliotecas estáticas en android ndk
- 16. Mezcla de bibliotecas estáticas y bibliotecas compartidas
- 17. Creando un proyecto, desde Makefile a bibliotecas estáticas/dinámicas en UNIX
- 18. Vinculación del código LLVM JIT a las bibliotecas LLVM estáticas?
- 19. Uso de librerías estáticas C/C++ desde iPhone Aplicaciones ObjectiveC
- 20. Dependencias transitorias para bibliotecas estáticas y SCons
- 21. Referencia indefinida a bibliotecas MySQL usando g ++
- 22. Archivos XIB vs. Definición de diseño en el código en el iPhone
- 23. ¿Puede resharper javascript intellisense hacer referencia a archivos js en otro proyecto en una solución?
- 24. Problema con archivos xib para iPad universal
- 25. Bibliotecas estáticas en el programa compilado de versión cruzada
- 26. Crear bibliotecas estáticas y compartidas de C++
- 27. Tiempo de carga para bibliotecas compartidas vs bibliotecas estáticas
- 28. seguridad de la hebra C# al hacer referencia a las propiedades estáticas en otras clases
- 29. Construyendo bibliotecas OpenCV desde archivos fuente
- 30. nuevo xib en xcode4
Gracias por los enlaces. ¿Sería posible organizar mis xibs en su propio paquete y hacer que mi código de biblioteca dependa de eso? (Lo siento si la respuesta está en ese documento de Apple que proporcionó; no tengo mucho tiempo para leerlo en este momento). – Kevlar
Acabo de encontrar esto, puede ser de utilidad: http://landonf.bikemonkey.org/code/ iphone/iPhone_Framework_Support.20081202.html – Justicle
A menos que los Xcode Wizards (o lo que sea que los llamemos en OSX) sean incorrectos, tampoco hay un "paquete" en iOS, dejándome en un estado marginalmente suicida. –