Me gustaría crear un marco para algún código reutilizable que me gustaría incluir en otras aplicaciones de iPhone. ¿Cuál es la mejor manera de hacerlo? Idealmente, me gustaría que funcione igual que los frameworks incorporados y que la aplicación lo use sin perder tiempo con los archivos de compilación.¿Cómo puedo crear un marco de iPhone y usarlo en otras aplicaciones de iPhone?
Respuesta
He estado pensando en lo mismo. Hasta ahora, todo lo que he podido hacer es hacer un proyecto exactamente como yo quiero y copiarlo en otra carpeta para comenzar un nuevo proyecto. Luego renombro el archivo .xcodeproj y lo abro. Luego, personalizo los conceptos básicos (íconos, default.png, el objetivo, el ejecutable) antes de compilar la nueva aplicación.
Es torpe, y NO la forma en que se supone que la reutilización de código funciona. Estoy seguro de que hay mejores soluciones. Tal vez algún uso inteligente de la gestión de código fuente/control de versiones? Tal vez algo integrado en XCode? ¿Otras ideas? Espero ver más publicaciones aquí.
Apple evita el uso de marcos personalizados en el iPhone. Pero puedes usar buenas viejas bibliotecas estáticas. En el 3.0 SDK de GM hay incluso una plantilla de proyecto para eso, pero también puede simplemente configurar un objetivo de biblioteca estática usted mismo.
@Nikolai Ruhe: ¿dónde exactamente prohíbe Apple el uso de marcos personalizados en el iPhone? He leído tanto el iOS Developer Program License Agreement como las Pautas de revisión de App Store, y parece que no se puede encontrar ninguna mención a tal prohibición.
No veo por qué Apple permitiría el uso de bibliotecas estáticas personalizadas y prohibir el uso de marcos personalizados. Tal vez me falta algún otro documento legal?
tal vez sea de arte técnico, como es difícil/imposible crear complementos de iphone para el constructor de interfaz – hfossli
Ningún código puede vincularse con ejecutables de iOS en tiempo de ejecución. Eso es lo que sucede con dylibs, frameworks y complementos; los archivos estáticos están vinculados en tiempo de compilación. Presumiblemente, esto se hace para evitar que las aplicaciones sean furtivas y violen los términos del SDK, o que se exploten de manera no intencional y pongan en riesgo los datos del usuario. (Como su libreta de direcciones, por ejemplo.) –
"Nota: La creación de marcos personalizados no es compatible con iOS". http://developer.apple.com/library/ios/#documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW1 –
He creado plantillas para Xcode 4 que te permiten construir marcos universales iOS (que funcionan tanto en el dispositivo como en el simulador).
Una vez que las plantillas están instaladas, simplemente selecciona "Marco de iOS estático" cuando crea un nuevo proyecto y hace el resto. También funciona con pruebas unitarias.
Muy bonito. ¡Gracias por compartirlo! –
ver este enlace, puede crear un marco absolutamente y utilizarlo. ¿Por qué Apple rechazará tu aplicación si estructuras tu programa? see this link
El marco no es más que la organización estructural de su código. No hay un enfoque directo para hacerlo. pero puedes lograrlo usando un paquete y un objetivo agrigado. Agregue un nuevo paquete a su proyecto y realice el siguiente SDK base: Último iOS (iOS X.X) (en el X.X aparecerá el número del iOS SDK más reciente instalado en su máquina). Arquitecturas: $ (ARCHS_STANDARD_32_BIT) armv6 (es muy importante tener exactamente este valor, incluido el espacio antes de "armv6") Esta configuración es válida para Xcode 4.2, si está utilizando una versión anterior, use el "Estándar (armv6 armv7)" opción. (los valores de esta propiedad dependen del valor del elemento siguiente, por lo tanto, configúrelo primero). Crear arquitectura activa solamente: NO (de lo contrario, no podemos compilar a armv6 y armv7 al mismo tiempo). Arquitectura válida: $ (ARCHS_STANDARD_32_BIT) (es muy importante ser exactamente este valor). Si su Xcode muestra dos líneas con armv6 y armv7, elimine e inserte este valor en una sola línea. Eliminación de código muerto: NO. Enlace con bibliotecas estándar: NO. Tipo Mach-O: Archivo de objetos reubicables. Este es el cambio más importante. Aquí, le indicamos al compilador que trate el Bundle como un archivo reubicable, al hacer esto, podemos convertirlo en un marco con la configuración de envoltura. Otros Indicadores de Enlazador: Esta configuración no es obligatoria, pero si está planeando utilizar cualquier tipo de código C++ (.cpp o.mm) en este marco, Chris Moore (en los comentarios) aconseja utilizar la opción "-lstdC++". En este caso, podría ser una buena idea usar "-ObjC" también, para evitar conflictos en viejos compiladores. Wrapper Extension: framework. Aquí cambiamos el paquete a un marco. Para Xcode, frameworks es solo una carpeta con la extensión .framework, que tiene dentro de una o más fuentes binarias compiladas, recursos y algunas carpetas, una carpeta, generalmente llamada Headers, contiene todos los encabezados públicos. Generar símbolos de depuración: NO (esta es una configuración muy importante, de lo contrario el marco no funcionará en otras computadoras/perfiles). Encabezado del prefijo de precompilación: NO.
crear un destino aggrigated y copia
# Sets the target folders and the final framework product.
FMK_NAME=FI
FMK_VERSION=A
# Install dir will be the final output to the framework.
# The following line create it in the root folder of the current project.
INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework
# Working dir will be deleted after the framework creation.
WRK_DIR=build
DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework
SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework
# Building both architectures.
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator
# Cleaning the oldest.
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
# Creates and renews the final product folder.
mkdir -p "${INSTALL_DIR}"
mkdir -p "${INSTALL_DIR}/Versions"
mkdir -p "${INSTALL_DIR}/Versions/${FMK_VERSION}"
mkdir -p "${INSTALL_DIR}/Versions/${FMK_VERSION}/Resources"
mkdir -p "${INSTALL_DIR}/Versions/${FMK_VERSION}/Headers"
# Creates the internal links.
# It MUST uses relative path, otherwise will not work when the folder is copied/moved.
ln -s "${FMK_VERSION}" "${INSTALL_DIR}/Versions/Current"
ln -s "Versions/Current/Headers" "${INSTALL_DIR}/Headers"
ln -s "Versions/Current/Resources" "${INSTALL_DIR}/Resources"
ln -s "Versions/Current/${FMK_NAME}" "${INSTALL_DIR}/${FMK_NAME}"
# Copies the headers and resources files to the final product folder.
cp -R "${DEVICE_DIR}/Headers/" "${INSTALL_DIR}/Versions/${FMK_VERSION}/Headers/"
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/Versions/${FMK_VERSION}/Resources/"
# Removes the binary and header from the resources folder.
rm -r "${INSTALL_DIR}/Versions/${FMK_VERSION}/Resources/Headers" "${INSTALL_DIR}/Versions/${FMK_VERSION}/Resources/${FMK_NAME}"
# Uses the Lipo Tool to merge both binary files (i386 + armv6/armv7) into one Universal final product.
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/Versions/${FMK_VERSION}/${FMK_NAME}"
rm -r "${WRK_DIR}"
esto en el guión correr y correr el objetivo de conseguir aggrigate el marco
Deje de enviar solo enlaces a su sitio web. –
@AndrewBarber ¿Crees que es mi sitio web? si solo contesto la pregunta? Sería mucho más feliz si ese fuera mi sitio web :) –
Tenga en cuenta que debe publicar los puntos útiles de una respuesta aquí, en este sitio, o su publicación corre el riesgo de ser eliminada como ["No es una respuesta"] (http: //meta.stackexchange.com/q/8259). Puede incluir el enlace si lo desea, pero solo como una "referencia". La respuesta debería ser independiente sin necesidad del enlace. –
- 1. Crear una biblioteca/marco de iPhone
- 2. ¿Existe un marco multiplataforma para desarrollar aplicaciones de iPhone/Android?
- 3. ¿Cómo integrar el marco XMPP para iPhone?
- 4. Aplicaciones iPhone
- 5. iPhone aplicaciones web, plantillas, marcos?
- 6. ¿Cómo puedo crear una conexión en serie Bluetooth entre un iPhone y un Arduino + Bluetooth Mate?
- 7. iPhone: cómo configurar el marco UIViewController?
- 8. Desarrollo de aplicaciones para iPhone y Android
- 9. marco de libro electrónico para iphone
- 10. ¿Cómo crear un calendario de cuadrícula en iPhone?
- 11. Uso de NSException en aplicaciones de iPhone
- 12. Almacenamiento de contraseñas en aplicaciones de iPhone
- 13. Crear un teclado personalizado y configurarlo en su iPhone
- 14. MonoTouch, el futuro de MonoTouch y si debería usarlo para las aplicaciones de iPhone (en lugar del objetivo-C)
- 15. ¿Cómo puedo desarrollar aplicaciones de producción de iPhone y iPad en la misma máquina?
- 16. Cómo configurar el marco para iphone 4 y iphone 5 en ios6
- 17. one XCode Project múltiples aplicaciones de iPhone
- 18. iPhone y Ipad: ¿cómo doblo un código?
- 19. ¿Puedo escribir aplicaciones nativas de iPhone usando Python?
- 20. cómo crear el botón de información en uinavigationbar en iphone
- 21. ¿Pueden las aplicaciones sqlite de iPhone conectarse a otras bases de datos?
- 22. Parrot - ¿Puedo usarlo? ¿Y cómo?
- 23. programación de aplicaciones scala en iphone?
- 24. iPhone desarrollo de aplicaciones en Ubuntu
- 25. ¿Cómo puedo obtener el MCC y MNC en un iPhone?
- 26. compartir datos entre dos aplicaciones de iphone
- 27. ¿Cómo puedo usar CIFilter en iPhone OS?
- 28. iPhone: Crear MKAnnotation
- 29. ¿Cómo puedo crear un UIButton grande y rojo con el SDK de iPhone?
- 30. ¿Cómo crear un gráfico de líneas en la aplicación iphone?
Véase la respuesta de Michael a continuación. Crear marcos es posible, solo requiere un poco de un enfoque manual. – DougW