2009-04-27 11 views
15

Sono un po 'confuso come funziona - questa è la mia comprensione:iPhone/Xcode: i diversi target di progetto possono avere identificatori di bundle diversi?

  • profilo di provisioning di un bersaglio è collegato a un ID applicazione specifica
  • L'identificatore bundle per un target si trova sotto informazioni di destinazione \ Properie \ Identificatore

Ma ... ID gruppo si trova anche in Info.plist. Sembra che se si modifica l'ID del gruppo in Info.plist, Xcode lo cambia automaticamente in Informazioni di destinazione \ Proprietà \ Identificatore e viceversa.

Quindi, chi ha la precedenza? L'ID Info destinazione \ Proprietà \ Identificatore o l'ID gruppo Info.plist?

Il motivo per cui lo chiedo è perché mi piacerebbe avere due versioni per la mia app, una versione gratuita e una versione a pagamento, e mi piacerebbe farlo con due obiettivi diversi. Dal momento che saranno due app diverse nell'App Store, ho bisogno di due ID app diversi (e non voglio percorrere la * route con gli ID app, la descrizione di come funziona sull'App Store ha reso la mia dolore al cervello).

Avrei bisogno di due diversi Info.plist per ogni obiettivo se ho fatto questo, o posso usare lo stesso Info.plist, e solo i diversi target usano un profilo di provisioning di sviluppo/distribuzione diverso?

risposta

25

Non c'è una precedenza, la finestra di dialogo delle proprietà è solo un altro modo per vedere il tuo Info.plist.

Per condividere il plist tra i target ma avere identificativi diversi, accertarsi che l'opzione "Espandi impostazioni build in file Info.plist" sia abilitata per entrambi i target. Quindi, per ciascun target, crea una nuova variabile creata dall'utente nelle impostazioni di destinazione per il tuo ID bundle (ad es. APPLICATION_BUNDLE_IDENTIFIER, vedi qui: https://stackoverflow.com/a/18472235/308315) e impostalo sul valore corretto per tale target. Nella tua plist, inserire il seguente per l'ID bundle:

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

La variabile verrà valutata in fase di compilazione per ogni target, in modo che ogni otterrà il giusto ID bundle.

+0

Questo probabilmente è '$ (PRODUCT_BUNDLE_IDENTIFIER)' invece '$ (APPLICATION_BUNDLE_IDENTIFIER)'. – Jano

Problemi correlati