2014-04-10 14 views
11

Tworzę aplikację na iPada z plikiem Settings.bundle. Piszę skrypty budujące, aby wyświetlić numer wersji aplikacji i numer integracji bota kodu (nie numer kompilacji pakietu). Przeszukałem internet i nie mogłem znaleźć żadnego rozwiązania. Oto, co jeszcze mam:Jak dodać numer integracji kodu Xcode do skryptu budowania

-- Add the app version number 
cd $PROJECT_DIR 
cd "$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app" 

RELEASE_VERSION=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" Info.plist) 
/usr/libexec/PlistBuddy -c "Set :PreferenceSpecifiers:1:DefaultValue $RELEASE_VERSION" Settings.bundle/Root.plist 

-- Add the build version number 
BUILD_NUMBER=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" Info.plist) 
/usr/libexec/PlistBuddy -c "Set :PreferenceSpecifiers:2:DefaultValue $BUILD_NUMBER" Settings.bundle/Root.plist 

w numerze wersji build, chciałbym wymienić CFBundleVersion z numerem Xcode bot Integracji.

Odpowiedz

15

Zaimplementowałem to przy użyciu Shell Build Build Phase w moim projekcie Xcode. W moim przypadku użyłem numeru integracji, aby ustawić wbudowany produkt w wersji wewnętrznej. Mój skrypt wygląda tak:

if [ "the$XCS_INTEGRATION_NUMBER" == "the" ]; then 
    echo "Not an integration build…" 
    xcrun agvtool new-version "10.13" 
else 
    echo "Setting integration build number: $XCS_INTEGRATION_NUMBER" 
    xcrun agvtool new-version "$XCS_INTEGRATION_NUMBER" 
fi 

Zauważ, że XCS_INTEGRATION_NUMBER istnieje domyślnie w Xcode Server budowania środowiska. Jeśli chcesz symulować kompilację integracji (na potrzeby tego skryptu), możesz po prostu dodać ją do ustawień kompilacji jako zmienną niestandardową.

1

Natknąłem się ostatnio na ten sam problem. Jest bardzo pragmatyczny, ale brzydki sposób na uzyskanie informacji na temat najnowszego numeru integracji Xcode Bots zjazdowe:

sudo grep -r "integration =" /Library/Server/Xcode/Logs/xcsbuildd.log | tail -1 | cut -d'=' -f 2| cut -d';' -f 1 |tr -d '\040\011\012\015' 

Stworzyłem również stackoverflow pytanie w celu znalezienia bardziej zintegrowanego i mniej hacky sposób osiągnięcia tego celu : Register for messages from collabd like XCSBuildService to receive Xcode Bots integration number

Ale może sposób analizowania pliku xcsbuildd.log, jak opisano powyżej, jest wystarczający do twoich celów.

+0

To nie działa dla mnie. Zawsze otrzymuję czysty wynik – iDev

5

dodałem (+) do Run Script do moich celów Konstruowanie Phase tuż przed Skompiluj Sources kroku. Ten jednoliniowy skrypt działa dla mnie, aby ustawić numer integracji jako numer kompilacji. Dzięki Kaelin, chciałem tylko trochę uprościć.

[ -z "$XCS_INTEGRATION_NUMBER" ] && echo "Build #0" || xcrun agvtool new-version ${XCS_INTEGRATION_NUMBER} 
7

W rzeczywistości nie trzeba nawet agvtool, aby ustawić numer kompilacji na numer integracji bota Xcode. Po prostu ustaw numer kompilacji na $ {XCS_INTEGRATION_NUMBER} w ustawieniach projektu.

Powiązane problemy