2011-01-12 11 views

Respuesta

25

Crear objetivos múltiples.

Puede variar las configuraciones de construcción haciendo clic con el botón derecho en un objetivo y seleccionando Obtener información. A partir de ahí, puede hacer cosas como cambiar qué archivo Info.plist está mirando (para hacer cosas como agregar "Lite" al nombre y cambiar el icono/cargar imágenes) y establecer indicadores de compilación para que pueda #ifdef en algunos lugares.

Si hay muchos archivos que solo son aplicables en la versión completa, puede hacer clic con el botón derecho en ellos y eliminarlos del objetivo Lite para crear una aplicación más pequeña.

Experimenté con varias alternativas, como múltiples configuraciones, y sigo volviendo a objetivos múltiples. Por lo general, tengo al menos tres definidos: Desarrollo, Ad hoc y App Store, cada uno con su propia configuración particular.

+0

Jim: cuando crea un nuevo objetivo, ¿tiene que copiar todos los archivos o solo los que NO son comunes? Por ejemplo, tengo un archivo de pantalla ligeramente diferente (.xib) ... Básicamente quiero desactivar un botón y agregar texto adicional a una etiqueta. Entonces, cuando creo un nuevo objetivo ¿debo copiar el original (.xib) y hacer cambios en el nuevo objetivo? – milesmeow

+0

Si los cambios son menores, proporcionaría una macro de preprocesador en la configuración de compilación para cada objetivo, luego usar '# ifdef' para hacer los cambios en el código. – Jim

+0

Si hay diferencias más amplias, crearía un directorio para cada objetivo y pondría una copia del plumín en cada carpeta, habilite cada uno para su propio objetivo. Cuando se crea el paquete de aplicaciones, Xcode ignora la estructura de carpetas original (de forma predeterminada) y copia los archivos para ese destino en una estructura de directorio plana. Como solo copiará uno de los dos archivos, terminará con el plumín correcto. – Jim

15

Agregue un objetivo adicional a su proyecto de Xcode duplicando el existente. Definir una macro en el nuevo objetivo (en "macros del preprocesador" en configuración de generación), algo así como "macroIsFreeVersion"

Ahora usted puede hacer esto:

#ifdef macroIsFreeVersion 
    // code that will only execute in the free version here 
#endif 

y esto:

#ifndef macroIsFreeVersion 
    // code for only the paid version goes here 
#endif 

Tendrá que hacer cambios adicionales para la identificación del paquete, el perfil de aprovisionamiento, etc. Todo lo que hizo para poner su versión paga en la tienda.

+0

Hola William: Estoy en XCode4 (también por favor tengan paciencia conmigo esta es la primera vez que intento hacer esta configuración multitarget y trabajar con indicadores de compilación). Tengo "Apple LLVM compiler 2.0 - Preprocesamiento" -> "Macros de preprocesador". Debajo de eso tengo Debug, Release, MyProject. Entonces, para seguir tu ejemplo, simplemente pondría "macroIsFreeVersion" en estos tres campos. – milesmeow

+0

Sí, aunque recientemente aprendí que también puede hacerlo a través del diccionario de información; el método es [[NSBundle mainBundle] infoDictionary]. Dependiendo de su configuración, esta puede o no ser una solución superior. –

Cuestiones relacionadas