Apple ha riordinato / riproposto i campi.
In futuro, se guardi la scheda Informazioni per il tuo Target applicazione, dovresti usare "Stringa di versioni del pacchetto, abbreviata" come versione (ad es. 3.4.0) e "Versione in bundle" come build (ad es. 500 o 1A500 ). Se non li vedi entrambi, puoi aggiungerli. Questi verranno associati alla casella di testo Versione e Build corretta nella scheda Riepilogo; sono gli stessi valori.
Quando si visualizza la scheda Informazioni, se si fa clic con il pulsante destro del mouse e si seleziona Mostra chiavi / valori non elaborati, i nomi effettivi sono CFBundleShortVersionString
(Versione) e CFBundleVersion
(Crea).
La versione di solito viene utilizzata nel modo in cui sembra che tu l'abbia utilizzata con Xcode 3. Non sono sicuro a quale livello stai chiedendo della differenza versione / build, quindi risponderò filosoficamente.
Esistono tutti i tipi di schemi, ma uno popolare è:
{MajorVersion}. {MinorVersion}. {} Revisione
- Versione principale : principali modifiche, riprogettazioni e modifiche di funzionalità
- Versione secondaria: miglioramenti minori, aggiunte alla funzionalità
- Revisione : un numero di patch per la correzione di errori
Quindi la build viene utilizzata separatamente per indicare il numero totale di build per una versione o per l'intera durata del prodotto.
Molti sviluppatori iniziano il numero di build su 0 e ogni volta che creano aumentano il numero di uno, aumentando per sempre. Nei miei progetti, ho uno script che aumenta automaticamente il numero di build ogni volta che costruisco. Vedi le istruzioni per quello sotto.
- La versione 1.0.0 potrebbe essere la build 542. Sono state necessarie 542 build per arrivare a una versione 1.0.0.
- La versione 1.0.1 potrebbe essere build 578.
- La versione 1.1.0 potrebbe essere build 694.
- La versione 2.0.0 potrebbe essere build 949.
Altri sviluppatori, tra cui Apple, hanno un numero di build composto da una versione principale + versione secondaria + numero di build per il rilascio. Questi sono gli attuali numeri di versione del software, al contrario dei valori utilizzati per il marketing.
Se vai al menu Xcode > Informazioni su Xcode , vedrai i numeri di versione e build. Se premi il pulsante Altre informazioni ... vedrai un sacco di versioni diverse. Dal momento che l' Info Più ... pulsante è stato rimosso in Xcode 5, questa informazione è disponibile anche dal Software> Developer sezione del Informazioni di sistema app, disponibile aprendo di Apple di menu Strumenti> Informazioni su questo Mac > System Report ... .
Ad esempio, Xcode 4.2 (4C139). La versione di marketing 4.2 è Build 4, Build minor versione C e Build numero 139. La prossima versione (presumibilmente 4.3) sarà probabilmente Build build 4D, e il numero Build ricomincerà da 0 e aumenterà da lì.
I numeri di versione / build dell'iPhone Simulator sono identici a quelli di iPhone, Mac, ecc.
- 3.2: (7W367a)
- 4.0: (8A400)
- 4.1: (8B117)
- 4.2: (8C134)
- 4.3: (8H7)
Aggiornamento : su richiesta, ecco i passaggi per creare uno script che viene eseguito ogni volta che si crea l'app in Xcode per leggere il numero di build, incrementarlo e riscriverlo nel {App}-Info.plist
file dell'app . Esistono ulteriori passaggi facoltativi se si desidera scrivere la versione / i numeri di build nei Settings.bundle/Root*.plist
file.
Questo è esteso dall'articolo di istruzioni qui .
In Xcode 4.2 - 5.0:
- Carica il tuo progetto Xcode.
- Nel riquadro di sinistra, fai clic sul tuo progetto nella parte superiore della gerarchia. Questo caricherà l'editor delle impostazioni del progetto.
- Sul lato sinistro del riquadro della finestra centrale, fai clic sulla tua app sotto l' intestazione TARGETS . Sarà necessario configurare questa configurazione per ciascun obiettivo del progetto.
- Seleziona la scheda Crea fasi .
- In Xcode 4, in basso a destra, fai clic sul pulsante Aggiungi fase di generazione e seleziona Aggiungi script di esecuzione .
- In Xcode 5, selezionare il menu Editor > Aggiungi fase di creazione > Aggiungi fase di creazione script di esecuzione .
- Trascina la nuova fase Esegui script per spostarla appena prima della fase Copia risorse bundle (quando il file app-info.plist verrà raggruppato con la tua app).
- Nella nuova Esegui script fase, impostare Shell :
/bin/bash
.
Copia e incolla quanto segue nell'area di script per i numeri di build interi:
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
Come sottolineato da @Bdebeez, è disponibile anche lo strumento di versioning generico di Apple ( agvtool
). Se invece preferisci usarlo, allora ci sono un paio di cose da cambiare prima:
- Seleziona la scheda Impostazioni build .
- Nella sezione Controllo versioni , imposta la versione corrente del progetto sul numero di build iniziale che desideri utilizzare, ad esempio 1 .
- Tornare alla scheda Fasi di generazione , trascinare e rilasciare la fase Esegui script dopo la fase Copia risorse bundle per evitare una condizione di competizione quando si tenta di creare e aggiornare il file di origine che include il numero di build.
Nota che con il agvtool
metodo potresti comunque ottenere periodicamente build fallite / cancellate senza errori. Per questo motivo, non è consigliabile utilizzare agvtool
con questo script.
Tuttavia, nella fase Esegui script , è possibile utilizzare il seguente script:
"${DEVELOPER_BIN_DIR}/agvtool" next-version -all
L' next-version
argomento incrementa il numero di build ( bump
è anche un alias per la stessa cosa) e si -all
aggiorna Info.plist
con il nuovo numero di build.
E se hai un bundle Impostazioni in cui mostri la versione e la build, puoi aggiungere quanto segue alla fine dello script per aggiornare la versione e la build. Nota: modificare i PreferenceSpecifiers
valori in base alle proprie impostazioni. PreferenceSpecifiers:2
significa guardare l'elemento all'indice 2 sotto l' PreferenceSpecifiers
array nel tuo file plist, quindi per un indice basato su 0, questa è la terza impostazione di preferenza nell'array.
productVersion=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$INFOPLIST_FILE")
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root.plist
Se stai usando agvtool
invece di leggere Info.plist
direttamente, puoi invece aggiungere quanto segue al tuo script:
buildNumber=$("${DEVELOPER_BIN_DIR}/agvtool" what-version -terse)
productVersion=$("${DEVELOPER_BIN_DIR}/agvtool" what-marketing-version -terse1)
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root.plist
E se hai un'app universale per iPad e iPhone, puoi anche configurare le impostazioni per il file iPhone:
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root~iphone.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root~iphone.plist