2012-06-25 17 views
25

Estoy trabajando en una aplicación en este momento y estamos tratando de hacer algunas pruebas contra el entorno de ensayo así como el entorno de producción. Naturalmente, he creado configuraciones de compilación "Stage" y "Prod" para alternar entre las dos, pero a mi cliente le gustaría tener las dos instaladas una al lado de la otra para que puedan cambiar fácilmente entre los dos entornos. Hasta ahora he estado haciendo esto manteniendo una rama de mi código con un identificador de paquete y un nombre de visualización de paquete diferentes, para que puedan ser instalados y probados uno al lado del otro. Sin embargo, me estoy empezando a preguntar si podría haber una manera más fácil de hacer esto. ¿Hay alguna manera de definir una configuración de compilación personalizada, darle un valor basado en la configuración de compilación y luego agregarla al final del identificador de paquete?Identificador de paquete diferente para configuraciones de compilación diferentes

Algo así como ...

BUNDLE_SUFFIX 
    TEST 
    STAGE 
    PROD ".PROD" 

... y luego puse mi identificador del paquete de com.blah.blah$(BUNDLE_SUFFIX). Entonces, todas las compilaciones con la configuración PROD obtendrán automáticamente la nueva identificación del paquete y no tendré que sincronizar las ramas todo el tiempo. ¿Es ese tipo de cosas posible?

+0

Una cosa que podría hacer es comprobar el paquete ID en el código y modifique el comportamiento de las aplicaciones según la identificación del paquete. Tengo tres versiones de una aplicación; versión de desarrollo, versión de prueba y versión en vivo: cada uno usa apis web diferentes. Así que verifico el identificador del paquete en tiempo de ejecución para determinar qué URLs usar. – ader

+0

También uso diferentes objetivos con diferentes perfiles, identificadores de paquetes y nombres, así que no tengo que meterme con ninguna ramificación para esto. – ader

+0

¿Es solo una url que está cambiando en tu etapa y producción? –

Respuesta

18

Sí, estás en el camino correcto. Aquí es un buen tutorial: http://nilsou.com/blog/2013/07/29/how-to-have-two-versions-of-the-same-app-on-your-device/

+0

¡Agradable! Ya no trabajo en ese proyecto, pero parece exactamente lo que necesitaba en ese momento. –

+0

Ese artículo funcionó bien para mí. Lo único que tuve que cambiar fue que si está usando un appiconset para el ícono de su aplicación, puede configurarlo en 'Build Settings' ->' Asset Catalog App Icon Set Name' en lugar de reemplazar cada archivo de ícono en 'plist ' –

+0

Ese tutorial es útil, pero ¿cómo especifico qué configuración de compilación construir sin hacer un esquema separado (que no quiero hacer ya que agrega más sobrecarga manual a todo el proyecto)? Lo ideal sería tener 3 configuraciones: desarrollo, puesta en escena, producción, todas tendrían diferentes urls y identidades de paquete – powerj1984

33

En Xcode 7:

Esto se puede hacer fácilmente mediante la configuración de envasado en la estructura Ajuste

enter image description here

+0

Esto es cierto. Sin embargo, hay otro marcador de posición de identificador de paquete en la pestaña general de la configuración de destino. Entonces, si mantiene un identificador de paquete diferente para cada configuración, ¿cómo se refleja en el panel general? –

+3

Edite su esquema y cambie 'Ejecutar'' Build Configuration' a 'Release' u otra cosa, cuyo valor predeterminado es' Debug'. Luego, su página 'general' mostrará las configuraciones de 'Release'. @RashmiRanjanmallick –

+1

Además de esto, también tuve que establecer 'Product Identifier Bundle' en Build Settings para cada configuración. De lo contrario, la configuración del Perfil de Aprovisionamiento en la pestaña General se quejaría (Xcode 8). – Simo

Cuestiones relacionadas