2012-02-13 14 views
6

Utilizzo l'utilità xcodebuild fornita con Xcode3 per automatizzare le mie build sotto Hudson. Il comando si presenta come segue:CODE_SIGN_IDENTITY parametro per xcodebuild (Xcode4)

xcodebuild -project Project.xcodeproj -target Target -configuration Release -sdk iphoneos CODE_SIGN_IDENTITY[sdk=iphoneos*]="iPhone Distribution:XXXXXX" 

Sto cercando di utilizzare lo stesso comando per Xcode4 ma sembra che xcodebuild solo ignora CODE_SIGN_IDENTITY parametri e segni con il profilo di provisioning che viene selezionato per il target in Xcode.

È molto importante per me dal momento che devo firmare la build con 3-4 profili diversi. Funziona bene con Xcode3 ma non funziona con Xcode4.

Qualche idea su come risolvere questo problema?

risposta

1

Per quanto ne so in Xcode 4 firma è fatto con xcrun strumento:

/usr/bin/xcrun -sdk "iphoneos" PackageApplication -v "myapp.app" -o "myapp.ipa" --sign "iPhone Developer: XXXXX" --embed "XXXXX.mobileprovisioning" 

E 'un po' scomodo da usare, perché è necessario specificare sia il file di identità e mobileprovisioning. Particolarmente scomodo se si utilizza l'ultimo dalla directory ~/Library/MobileDevice/Provisioning Profiles/ perché il suo nome viene modificato ogni volta che i profili di provisioning vengono aggiornati automaticamente dal portale di provisioning.

+0

AFAIK per firmare l'applicazione Xcode/xcodebuild utilizza l'applicazione/usr/bin/codesign – Dmytro

+0

In ogni caso hai risolto il problema? Sto costruendo le mie app con questo comando. –

+0

@MishaKarpenko, il link github che hai condiviso è scaduto. puoi condividere di nuovo la sceneggiatura? Grazie – gstream79

1

Basta usare CODE_SIGN_IDENTITY = "iPhone Distribuzione: XXXXXX" con XCode 4 (senza [SDK = iPhoneOS *])

xcodebuild -project Project.xcodeproj -target Target -configuration Release -sdk iphoneos CODE_SIGN_IDENTITY="iPhone Distribution:XXXXXX" 
+0

Non funziona per me. Prende solo qualunque sia il profilo predefinito per il target/schema. – Dmytro

+0

Prova ad aggiungere PROVISIONING_PROFILE = "$ provision". Funziona bene per me quando entrambi (CODE_SIGN_IDENTITY e PROVISIONING_PROFILE sono specificati. –

+1

questo è il mio comando completo 'xcodebuild -target Target -sdk iphoneos -configurazione" Ad Hoc "" CODE_SIGN_IDENTITY [sdk = iphoneos *] == Distribuzione iPhone: XXX "" PROVISIONING_PROFILE =/Users/$ USER/Libreria/MobileDevice/Profili di provisioning/XXX.mobileprovision "' Quando xcodebuild sta tentando di firmare l'app, ci vuole un altro profilo, quello predefinito per questo schema '/ usr/bin/codesign - -force --sign "Distribuzione iPhone: XXX1" "--resource-rules = ResourceRules.plist "--entitlements" App.xcent "" App.app "' E XXX! = XXX1 purtroppo – Dmytro

3

avevo seguente problema:

I nostri sviluppatori hanno utilizzato il 'iPhone Development' firma identità, ma avevo bisogno di usare l'identità di firma "iPhone Distribution" per il nostro sistema di integrazione automatizzata.

Così ho aggiunto la linea:

codesign -f --sign "iPhone Distribution: XXXXXXX" ${PATH_TO_APP} 

tra il xcodebuild ei comandi xcrun di scambiare le identità firma del codice (vedere la bandiera -f).

6

Un nuovo xcodebuild ora consente di specificare le impostazioni. Tratto da developer.apple.com:

xcodebuild [-project projectname] [-target targetname ...] 
      [-configuration configurationname] [-sdk [sdkfullpath | sdkname]] 
      [buildaction ...] [setting=value ...] [-userdefault=value ...] 

Ho trovato anche questa risorsa per spiegare il available settings

CODE_SIGN_IDENTITY (Code Signing Identity) 
    Description: Identifier. Specifies the name of a code signing identity. 
    Example value: iPhone Developer 

Tuttavia, PROVISIONING_PROFILE non è presente l'indice dei comandi disponibili.

Il comando I ha infine utilizzato le impostazioni "CODE_SIGN_IDENTITY" & "PROVISIONING_PROFILE".

xcodebuild -sdk <iphoneos> -target <target_name> -configuration <Debug> CODE_SIGN_IDENTITY="iPhone Developer: Mister Smith" PROVISIONING_PROFILE="XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX" 
+2

L'argomento di 'PROVISIONING_PROFILE' deve essere UUID, ad esempio' FAEB2AC2-33DB-4192-9711-06BD5ACD5ADD'. Potresti ottenere questo UUID da [iPhoneConfigUtility] (http://support.apple.com/downloads/#iphone%20configuration%20utility) o semplicemente apri il file .mobileprovision con vim – Xiao

+3

o usa '/ usr/libexec/PlistBuddy -c" Stampa UUID "/dev/stdin <<< $ (sicurezza cms -D -i pathtofile.provision) ' –

0

Ho trovato una soluzione eccellente per la costruzione con jenkins.

In primo luogo, prima di impostare un lavoro, scaricare un plugin Jenkins chiamato:

parametrizzato trigger Plugin

https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin

Una volta fatto questo, crea il tuo lavoro e durante la creazione del lavoro, selezionare il

'Questa build è parametrizzato' casella

Creare un parametro di stringa. Chiamo il mio CODE_SIGN_IDENTITY.

Così il campo nome nella stringa di parametro deve essere:


Nome: CODE_SIGN_IDENTITY

Valore predefinito: iPhone Developer: XXX XXXXX

Descrizione: Qualunque cosa si vuole mettere lì


Quindi nel tuo Xcode Plugin, trova il 'Cust campo om xcodebuild arguments '.

Nel personalizzato xcodebuild campo argomenti, inserire il seguente valore:

CODE_SIGN_IDENTITY = $ {} CODE_SIGN_IDENTITY

Completamento della configurazione di lavoro e si dovrebbe essere tutto a posto!

Ciò aggirerà il problema dello spazio bianco. Il plugin è un salvavita perché funziona meravigliosamente e puoi personalizzare la tua build con altri parametri.

Problemi correlati