2009-11-16 11 views
5

Estoy a punto de terminar mi primer proyecto Xcode relativamente simple (un instalador personalizado) y tengo que hacer 22 compilaciones. ¡Sí, eso no fue un error tipográfico! Lo que es diferente en cada compilación es PRODUCT_NAME, un archivo fuente en la carpeta de recursos del paquete y una variable que dice si el software es una versión de prueba o no.La forma más eficiente de hacer 22 construcciones diferentes

Según lo que he leído hasta ahora, duplicar el objetivo existente parece ser la forma de hacerlo cuando solo hay un par de compilaciones, pero ¿eso sigue siendo cierto para 22? Parece mucho trabajo. Lo que tenía en mente era una forma de cambiar PRODUCT_NAME, los archivos de origen que se copian en la carpeta de Recursos y el modo de prueba booleano. Pero estoy atrapado.

gracias

Respuesta

1

probablemente me escribir un script que usa una plantilla .xcodeproj y sed para generar todas las combinaciones necesarias.

1

Es posible que desee comprobar CMake para mantener este gran número de compilaciones.

Las secuencias de comandos sin duda pueden hacer el trabajo, pero una vez que el proyecto crezca a un número significativo de archivos, o si cambia el número de compilaciones, cambiar el script podría ser complicado. CMake le permitirá organizar esos scripts, por lo que es al menos un poco más fácil hacer las modificaciones en el futuro.

2

Mi respuesta visceral es que 22 diferentes formaciones que sólo difieren en un único archivo de origen está mal ...

No puede ser el problema se dio la vuelta? Incluya las 22 versiones diferentes de su aplicación en una compilación y suministre 22 archivos de clave/licencia diferentes en la carpeta .app, cada uno desbloqueando una de las 22 versiones.

+0

Desafortunadamente no. Se trata de complementos que no se pueden proteger mediante copia, por lo que deben formar compilaciones separadas para la descarga por separado. – user212253

+0

Complementos: compile una aplicación y proporcione diferentes complementos que contengan la funcionalidad deseada. Aunque eso casi trae de vuelta el problema de las 22 construcciones ... –

2

Una forma de lograr esto en el pasado es utilizar la localización. Cuando utiliza las macros con sabor NSLocalizedString, algunas de ellas tienen la capacidad de especificar un tableName (es decir, un archivo de cadenas diferente al predeterminado). Entonces, cada vez que necesito una compilación de marca diferente, simplemente creo un nuevo archivo .strings con los pares clave-valor apropiados.

Luego tengo un objetivo de compilación que crea el código con los valores predeterminados, y un segundo objetivo que toma el código creado y copia el archivo .strings apropiado en su ubicación correcta. Esto funciona bastante bien y nos ha permitido gestionar muchos sabores de construcción diferentes.

Cuestiones relacionadas