2009-04-27 9 views
15

estoy un poco confundido cómo funciona esto - esto es mi entendimiento:iPhone/Xcode: ¿pueden los diferentes objetivos del proyecto tener diferentes identificadores de paquetes?

  • archivo de suministro de un objetivo está vinculada con un ID de aplicación específica
  • El identificador del paquete para un objetivo se encuentra bajo información de destino \ Properies \ Identificador

Pero ... bundle ID también se encuentra en Info.plist. Parece que si cambia la ID del paquete en Info.plist, Xcode lo cambia automáticamente en Target info \ Properties \ Identificador, y viceversa.

Entonces, ¿qué es eso que tiene prioridad? El Target info \ Properties \ Identificador ID de paquete o el Info.plist ¿ID de paquete?

La razón por la que pregunto es porque me gustaría tener dos versiones para mi aplicación, una versión compatible con publicidad gratuita y una versión paga, y me gustaría lograr eso con dos objetivos diferentes. Como se tratarán de dos aplicaciones diferentes en App Store, entiendo que necesitan dos ID de aplicación diferentes (y no quiero ir por * la ruta con las ID de la aplicación, la descripción de cómo funciona eso en la App Store hizo daño cerebral).

¿Necesitaría dos Info.plists diferentes para cada objetivo si lo hiciera, o puedo usar el mismo Info.plist, y simplemente tener los diferentes objetivos usar un perfil de aprovisionamiento de distribución/desarrollo diferente?

Respuesta

25

No hay precedencia, el cuadro de diálogo de propiedades solo sirve como otra forma de ver su Info.plist.

Para compartir el plist entre los objetivos pero tiene identificadores diferentes, asegúrese de que la opción "Expandir configuraciones de compilación en el archivo Info.plist" esté habilitada para ambos objetivos. A continuación, para cada objetivo, cree una nueva variable creada por el usuario en la configuración de destino para su ID de paquete (por ejemplo, APPLICATION_BUNDLE_IDENTIFIER, consulte aquí: https://stackoverflow.com/a/18472235/308315) y configúrela al valor correcto para ese destino. En su plist, ponga el siguiente paquete de ID:

<key>CFBundleIdentifier</key> 
<string>$(APPLICATION_BUNDLE_IDENTIFIER)</string> 

La variable será evaluada en tiempo de compilación para cada objetivo, por lo que cada uno va a obtener el identificador de rama derecha.

+0

Probablemente sea '$ (PRODUCT_BUNDLE_IDENTIFIER)' en lugar '$ (APPLICATION_BUNDLE_IDENTIFIER)'. – Jano

Cuestiones relacionadas