2014-04-10 17 views
11

Sto creando un'applicazione iPad con un file Settings.bundle. Sto scrivendo script di build per visualizzare il numero di versione dell'applicazione e il numero di integrazione del bot xcode (non il numero di build del bundle). Ho cercato sul Web e non ho trovato nessuna soluzione. Ecco quello che ho ottenuto ancora:Come aggiungere il numero di integrazione di Xcode Bot nello script di creazione

-- 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 

nel numero di versione di build, vorrei sostituire il CFBundleVersion con il numero di Xcode bot integrazione.

risposta

15

ho implementato questo utilizzando una shell script Costruire fase nella mia Xcode progetto . Nel mio caso, ho utilizzato il numero di integrazione per impostare la versione interna del prodotto creato. Il mio script è simile al seguente:

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 

noti che XCS_INTEGRATION_NUMBER esiste per impostazione predefinita nel server ambiente di sviluppo Xcode . Se si desidera simulare una build di integrazione (ai fini di questo script), è sufficiente aggiungerla alle impostazioni di creazione come variabile personalizzata.

1

Mi sono imbattuto recentemente nello stesso problema. c'è un modo molto pragmatico ma brutto di ottenere informazioni su l'ultimo numero integrazione di Xcode Bots corre:

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' 

Ho anche creato una domanda StackOverflow al fine di trovare un modo più integrato e meno hacky di realizzazione di questo obiettivo : Register for messages from collabd like XCSBuildService to receive Xcode Bots integration number

Ma forse il modo in cui si analizza xcsbuildd.log come descritto sopra è sufficiente per i propri scopi.

+0

Non funziona per me. Ricevo sempre un risultato vuoto – iDev

5

ho aggiunto (+) un Esegui scriptai miei obiettivi Corporatura Fase appena prima compilare sorgenti passo. Questo script a una riga funziona per me per impostare il numero di integrazione come numero di build. Grazie Kaelin, volevo solo semplificare un po 'le cose.

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

In realtà non è nemmeno necessario agvtool per impostare il numero di build sul numero di integrazione del bot Xcode. Basta impostare il numero di build su $ {XCS_INTEGRATION_NUMBER} nelle impostazioni del progetto.