2012-03-24 13 views
52

Ich habe ein paar andere Einträge gefunden, die zeigen, wie ein Skript hinzufügen, um die Build-Nummer mit einem Skript zu erhöhen:Xcode-Inkrement-Build-Nummer nur während ARCHIVE?

Better way of incrementing build number?

Xcode project's "Build number"

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

Aber was ich tun möchte, , ist nur erhöhen die Build-Nummer, wenn ich ARCHIVE (sowohl vorher als auch nachher).

Beispiel: Wenn die aktuelle Build-Nummer 21 ist, wird die Build-Nummer bei der Auswahl von "Product> Archive" auf 22 erhöht und die Archivdatei mit der Build-Nummer 22 erstellt. Wenn die Archivierung abgeschlossen ist, wird die Buildnummer auf 23 erhöht.

+6

Sie möchten jedes Mal, wenn Sie es archivieren, der Build-Nummer zwei hinzufügen? – lnafziger

+0

Ich möchte 1 hinzufügen, bevor es archiviert ist, dann 1 nach dem Archiv hinzufügen. Im obigen Beispiel hat das Archiv selbst die Build-Nummer 22. Aber ich möchte die Build-Nummer nicht jedes Mal erhöhen, wenn ich sie erstelle, sondern nur, wenn ich sie archiviere. – jsherk

+1

Danke! Ich habe diese Frage beim Erstellen meines eigenen Archivskripts gefunden und liebe die Idee, die Build-Nummer zweimal zu erhöhen. Ich habe es schließlich in meine aufgenommen: https://github.com/musictheory/rchook (Fühlen Sie sich frei zu kopieren, wenn es Ihnen hilft) – iccir

Antwort

75

Fügen Sie das folgende Skript hinzu, wie in dem Beispiel, das im ersten von Ihnen geposteten Link aufgeführt ist, ABER tun Sie es zweimal. Nachdem zu Beginn des Build und einmal am Ende:

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 

Vielen Dank an die Autoren der Fragen, die Sie in Ihrer Frage verknüpft haben für die Informationen, die mich zu dieser Antwort gestartet bekamen!

+1

Das ist genial! Vielen Dank! Funktioniert perfekt. In Xcode 4.2 müssen Sie das Skript nicht einmal irgendwo in einem Verzeichnis erstellen, Sie können es einfach kopieren und direkt in den Abschnitt "Build Phase" einfügen. – jsherk

+1

Ok, eine Korrektur .. In Xcode 4.2, es muss '== Release' anstelle von '== Archive' sein – jsherk

+0

Danke, korrigiert! Das ist eigentlich das, was ich hatte, dachte aber, dass es für etwas anderes war, lol. – lnafziger

18

Dies ist sehr ähnlich zu @ mit einer Checkbox in XCode Inafziger Antwort, aber ein prägnanter Satz von Code, mit dem zusätzlichen Vorteil, dass die Prüfung auf „Release“ eher als eine Laufzeitvariable erfolgt:

enter image description here

Befolgen Sie diese Anweisungen zweimal, zieht eine am Anfang und eine am Ende:

# 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}" 

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

+1

Ich hatte auch großen Erfolg, dieses Skript zu den Post-Aktionen des Schemas hinzuzufügen, wie von @starkos oben vorgeschlagen. Vielen Dank! – metatheoretic

+0

Dies ist sehr einfach und funktioniert immer noch auf Xcode 6. – unmircea

+2

Entfernen Sie den '$ {PROJECT_DIR} /' Teil der Pfade, wenn Sie 'Print: Entry," CFBundleVersion ", nicht existiert. – Paul

5

Xcode enthält the command line tool agvtool to increase version numbers. Sie müssen also nicht alles manuell mit PListBuddy machen.

xcrun agvtool next-version -all

erhöht die Build-Nummer.

xcrun agvtool new-marketing-version 2.0

setzt einen neuen Benutzer sichtbar Versionsnummer.

Siehe full documentation for details.

+0

Sollte ich dieses Skript vor oder nach dem Build hinzufügen? –

+0

Vorher. Sie möchten, dass die neue Version eingebunden wird. – orkoden

+1

Wow - erstaunt das hat nicht mehr Stimmen, es ist scheinbar die perfekte Antwort. Danke @orkoden – NSTJ

Verwandte Themen