2012-03-24 13 views
52

Znalazłem kilka innych postów, które pokazują, w jaki sposób dodać skrypt do przyrostu numer kompilacji ze skryptu:Numer kompilacji Xcode-increment tylko podczas ARCHIWUM?

Better way of incrementing build number?

Xcode project's "Build number"

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

ale to, co chcesz zrobić , tylko zwiększa numer kompilacji, gdy używam ARCHIVE (zarówno przed jak i po).

Przykład: Jeśli aktualny numer kompilacji wynosi 21, to kiedy wybiorę Produkt> Archiwum, numer kompilacji zostanie zwiększony do 22, przejdzie proces tworzenia i tworzenia pliku archiwum o numerze kompilacji 22, a następnie po zakończeniu archiwizacji zwiększy liczbę kompilacji do 23.

+6

Chcesz dodać dwa do numeru kompilacji za każdym razem, gdy go archiwizujesz? – lnafziger

+0

Chcę dodać 1, zanim zostanie zarchiwizowany, a następnie dodać 1 po zarchiwizowaniu. W powyższym przykładzie samo archiwum będzie miało numer kompilacji 22. Nie chcę jednak zwiększać liczby kompilacji za każdym razem, gdy ją buduję, tylko wtedy, gdy ją archiwizuję. – jsherk

+1

Dzięki! Znalazłem to pytanie podczas tworzenia własnego skryptu archiwum i uwielbiam pomysł "zwiększ liczbę kopii dwa razy". Skończyło się na włączeniu go do mojego: https://github.com/musictheory/rchook (Możesz go skopiować, jeśli ci to pomoże) – iccir

Odpowiedz

75

Dodaj następujący skrypt, tak jak w przykładzie wymienionym na pierwszym zamieszczonym przez Ciebie linku, ALE wykonaj to dwa razy. Raz na początku budowy, a raz na koniec:

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 

Wielkie podziękowania dla autorów pytań, które zostały połączone w swoim pytaniu do informacji, które dostał mnie rozpoczął się tej odpowiedzi!

+1

To jest niesamowite! Dzięki! Działa idealnie. W Xcode 4.2 nie musisz nawet tworzyć skryptu w katalogu gdzieś, możesz go po prostu skopiować i wkleić bezpośrednio w sekcji Build Phase. – jsherk

+1

OK, jedna korekta .. W Xcode 4.2, musi to być '== Release' zamiast' == Archive' – jsherk

+0

Dzięki, poprawione! To jest to, co miałem, ale myślałem, że to było dla czegoś innego, lol. – lnafziger

18

Jest to bardzo podobne do @ odpowiedź Inafziger, ale bardziej zwięzły zestaw kodu, z dodatkową korzyścią, że czek na „uwolnienie” odbywa się z wyboru w Xcode zamiast zmiennej środowiska wykonawczego:

enter image description here

Poniższe instrukcje dwukrotnie, przeciągając jeden na początku i jeden na końcu:

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

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

+1

Udało mi się również dodać ten skrypt do post-działania schematu zgodnie z sugestią @starkos powyżej. Dzięki! – metatheoretic

+0

To jest bardzo proste i nadal działa na Xcode 6. – unmircea

+2

Usuń '$ {PROJECT_DIR} /' część ścieżek, jeśli pobieranie 'Print: Entry," CFBundleVersion ", nie istnieje". – Paul

5

Xcode zawiera the command line tool agvtool to increase version numbers. Nie musisz więc robić wszystkiego ręcznie za pomocą PListBuddy.

xcrun agvtool next-version -all

zwiększa swój numer kompilacji.

xcrun agvtool new-marketing-version 2.0

ustawia numer widoczny wersji nowego użytkownika.

Zobacz full documentation for details.

+0

Czy powinienem dodać ten skrypt przed lub po kompilacji? –

+0

Poprzednio. Chcesz dołączyć nową wersję. – orkoden

+1

Wow - zdziwiony, że nie ma więcej głosów, to pozornie doskonała odpowiedź. Dzięki @orkoden – NSTJ

Powiązane problemy