2010-04-05 11 views
11

Tengo algunas dificultades para crear un paquete para mi aplicación y colocar archivos en el paquete.Cómo crear mi propio paquete en Xcode, para la aplicación de iPhone

Por ejemplo, Facebook ha desarrollado un paquete para aplicaciones de iPhone que utilizan su marco. De la misma manera, también quiero crear un paquete que pueda ser reutilizado para muchas aplicaciones.

Mis preguntas son:

  • ¿Qué pasos deben seguir para crear un paquete para cualquier tipo de aplicación?
  • ¿Qué se debe tener cuidado al crear un paquete?

Respuesta

11

Antes que nada, dado que su pregunta está etiquetada como iPhone, solo puede incluir el código en sus paquetes en el iPhone. Entonces, básicamente, solo puede usar paquetes para empaquetar imágenes y archivos de sonido y otros datos estáticos.

Cuando crea un nuevo proyecto en XCode, hay una opción para convertir el destino en un paquete (en la Biblioteca de Framework &), pero un paquete de activos es solo un directorio con un sufijo .bundle. Genero de minas con este pequeño script:

#!/bin/bash 
echo "Building assets bundle." 
if [ -d ./MyAssets.bundle ]; then 
    rm ./MyAssets.bundle/* 
else 
    mkdir ./MyAssets.bundle 
fi 
find ./assets -type f -print0 | xargs -0 -J% cp % ./MyAssets.bundle 

(no soy un hacker de fiesta, así que probablemente esto se puede mejorar de muchas maneras aceptan sugerencias.!)

Esto toma una jerarquía de carpetas y la aplana (Detesto las jerarquías) en un único directorio que se llama MyAssets.bundle. Disparo esta secuencia de comandos desde una fase de construcción separada cuando en proyectos que importan el paquete, para que los cambios se rastreen automáticamente.

Si desea aprender a crear paquetes de marcos, es un poco más complicado (debe seguir ciertas convenciones e incluir información en listas), pero para los paquetes de iPhone, esto es prácticamente todo lo que necesita saber y hacer.

+0

¿Es posible cargar archivos xib de este paquete, porque no he encontrado una manera de hacer eso ? – vakio

+0

Puede usar el paquete apropiado en el paquete [[NSBundle mainBundle] loadNibNamed: @ "MyViewController": self options: nil] y [aViewController initWithNibName: @ "MyViewController" bundle: nil] (nil solo significa el paquete principal) – Felixyz

+0

Pero no puedes tener un paquete externo, ¿verdad? Como NSBundle * bundle = someFunctionToLoadExternalBundle(); [bundle loadNibNamed: @ "name" owner: self options: nil]; Busqué en Google y solo descubrí que no se puede hacer. Solo comprobando si descubrió una forma milagrosa de hacerlo o algo así, pero sé que probablemente nunca va a suceder. – vakio

8

Se podría hacer esto también:

hacer una carpeta en el Finder, añadir archivos a la misma, cambiarle el nombre a bundlename.bundle

arrastre en Xcode - éxito!

para acceder, usar la forma de PathToMainBundle + "/ bundlename.bundle"

Fuente: https://stackoverflow.com/a/5277452/736384

Cuestiones relacionadas