2012-03-24 4 views
52

ho trovato un paio di altri posti che mostrano come aggiungere uno script per incrementare il numero di build con uno script:Numero di incremento dell'incremento Xcode solo durante l'ARCHIVIO?

Better way of incrementing build number?

Xcode project's "Build number"

Can Xcode insert the version number into a library's filename when building?

Ma quello che voglio fare , è solo aumentare il numero di build quando utilizzo ARCHIVE (sia prima che dopo).

Esempio: Se la corrente numero di build è 21, quindi quando scelgo prodotto> Archivio il numero di build sarà aumentato a 22, si passerà attraverso il processo di costruzione e creazione del file di archivio con il numero di build del 22, e al termine dell'archiviazione, il numero di build verrà aumentato a 23.

+6

Si desidera aggiungere due al numero di build ogni volta che lo si archivia? – lnafziger

+0

Voglio aggiungere 1 prima che venga archiviato, quindi aggiungere 1 dopo il suo archivio. Quindi nell'esempio sopra, l'archivio stesso avrà il numero di build 22. Ma non voglio aumentare il numero di build ogni volta che lo costruisco, solo quando lo archivo. – jsherk

+1

Grazie! Ho trovato questa domanda mentre creavo il mio script di archivio e amo la tua idea di "incrementare il numero di build due volte". Ho finito per incorporarlo nel mio: https://github.com/musictheory/rchook (Sentiti libero di copiare se ti aiuta) – iccir

risposta

75

Aggiungere lo script seguente, come nell'esempio elencato nel primo collegamento che è stato postato, MA fatelo due volte. Una volta all'inizio della costruzione e una volta alla fine:

if [ $CONFIGURATION == Release ]; then 
    echo "Bumping build number..." 
    plist=${PROJECT_DIR}/${INFOPLIST_FILE} 

# increment the build number (ie 115 to 116) 
    buildnum=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${plist}") 
    if [[ "${buildnum}" == "" ]]; then 
     echo "No build number in $plist" 
     exit 2 
    fi 

    buildnum=$(expr $buildnum + 1) 
    /usr/libexec/Plistbuddy -c "Set CFBundleVersion $buildnum" "${plist}" 
    echo "Bumped build number to $buildnum" 

else 
    echo $CONFIGURATION " build - Not bumping build number." 
fi 

Molte grazie a delle domande che avete legati alla tua domanda per le informazioni che mi ha fatto gli autori ha iniziato su questa risposta!

+1

È fantastico! Grazie! Funziona perfettamente. In Xcode 4.2 non hai nemmeno bisogno di creare lo script in una directory da qualche parte, puoi semplicemente copiarlo e incollarlo direttamente nella sezione Build Phase stessa. – jsherk

+1

Ok, una correzione .. In Xcode 4.2, deve essere '== Release' invece di' == Archive' – jsherk

+0

Grazie, corretto! Questo è in realtà quello che avevo ma pensavo che fosse per qualcos'altro, lol. – lnafziger

18

Questo è molto simile a @ risposta di Inafziger, ma un insieme più conciso di codice, con l'ulteriore vantaggio che l'assegno di "Release" è fatto con una casella di controllo in XCode, piuttosto che una variabile di runtime:

enter image description here

Seguire le istruzioni per due volte, trascinando uno all'inizio e uno alla fine:

# xcode-build-bump.sh 
# @desc Auto-increment the build number every time the project is run. 
# @usage 
# 1. Select: your Target in Xcode 
# 2. Select: Build Phases Tab 
# 3. Select: Add Build Phase -> Add Run Script 
# 4. Paste code below in to new "Run Script" section 
# 5. Drag the "Run Script" below "Link Binaries With Libraries" 
# 6. Ensure that your starting build number is set to a whole integer and not a float (e.g. 1, not 1.0) 
# 7. Check the checkbox "Run script only when installing" 

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}") 
buildNumber=$(($buildNumber + 1)) 
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}" 

Vedi https://gist.github.com/sekati/3172554

+1

Ho anche avuto un grande successo aggiungendo questo script alle Post-Azioni dello schema come suggerito da @starkos sopra. Grazie! – metatheoretic

+0

Questo è molto semplice e funziona ancora su Xcode 6. – unmircea

+2

Rimuovi la parte '$ {PROJECT_DIR} /' dei percorsi se ottieni 'Stampa: voce," CFBundleVersion ", non esiste". – Paul

5

Xcode include the command line tool agvtool to increase version numbers. Quindi non devi fare tutto manualmente con PListBuddy.

xcrun agvtool next-version -all

aumenta il numero di build.

xcrun agvtool new-marketing-version 2.0

imposta un numero di versione visibile nuovo utente.

Vedere full documentation for details.

+0

Devo aggiungere questo script prima o dopo la compilazione? –

+0

Prima. Vuoi la nuova versione da includere. – orkoden

+1

Wow - stupito questo non ha più voti, è apparentemente la risposta perfetta. Grazie @orkoden – NSTJ