2012-02-13 12 views
6

Używam narzędzia xcodebuild dostarczanego z Xcode3 do automatyzacji moich kompilacji pod Hudsonem. Polecenie wygląda to następująco:Parametr CODE_SIGN_IDENTITY dla xcodebuild (Xcode4)

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

Próbuję użyć tego samego polecenia dla Xcode4 ale wydaje się, że po prostu ignoruje CODE_SIGN_IDENTITYxcodebuild parametr i znaki z profilem rezerw, która jest wybrana do celu w Xcode.

Jest to dla mnie bardzo ważne, ponieważ muszę podpisać umowę z 3-4 różnymi profilami. Działa poprawnie z Xcode3, ale nie działa z Xcode4.

Każdy pomysł, jak rozwiązać ten problem?

Odpowiedz

1

O ile wiem, w Xcode 4 podpisanie odbywa się xcrun narzędzia:

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

To jest trochę niewygodny w użyciu, ponieważ należy określić zarówno plik tożsamości i mobileprovisioning. Szczególnie niewygodne, jeśli używasz ostatniego z katalogu ~/Library/MobileDevice/Provisioning Profiles/, ponieważ jego nazwa zmienia się za każdym razem, gdy profile provisioningu są aktualizowane automatycznie z portalu obsługi administracyjnej.

+0

AFAIK do podpisania aplikacji Xcode/xcodebuild używa/usr/bin/codesign application – Dmytro

+0

W każdym razie rozwiązałeś problem? Buduję swoje aplikacje za pomocą tego polecenia. –

+0

@MishaKarpenko, udostępniony przez Ciebie link github wygasł. czy możesz mi ponownie udostępnić scenariusz? Dzięki – gstream79

1

Wystarczy użyć CODE_SIGN_IDENTITY = "iPhone Dystrybucja: xxxxxx" z Xcode 4 (bez [sdk = iPhoneOS *])

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

Nie działa dla mnie. Po prostu bierze wszystko, co jest domyślnym profilem dla celu/schematu. – Dmytro

+0

Spróbuj dodać PROVISIONING_PROFILE = "$ provision". Działa to dobrze dla mnie, gdy podane są oba (CODE_SIGN_IDENTITY i PROVISIONING_PROFILE. –

+1

to moje pełne polecenie 'xcodebuild -target Target -sdk iphoneos -configuration" Ad Hoc "" CODE_SIGN_IDENTITY [sdk = iphoneos *] == iPhone Dystrybucja: XXX "" PROVISIONING_PROFILE =/Users/$ USER/Library/MobileDevice/Provisioning Profiles/XXX.mobileprovision "' Kiedy xcodebuild próbuje podpisać aplikację, przyjmuje inny profil. Ten, który jest domyślny dla tego schematu '/ usr/bin/codesign - -force --sign "Rozkład iPhone'a: ​​XXX1" "--resource-rules = ResourceRules.plist "--entitlements" App.xcent "" App.app "' Oraz XXX! = XXX1 niestety – Dmytro

3

Miałem następujący problem:

Nasi programiści użył 'iPhone rozwoju' podpisywanie tożsamości, ale musiałem użyć tożsamości podpisującej "iPhone Distribution" w naszym zautomatyzowanym systemie integracyjnym.

Więc dodałem linijkę:

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

między xcodebuild i poleceń xcrun zamienią podpisywania kodu tożsamość (patrz flagę -f).

6

Nowszy xcodebuild umożliwia teraz określenie ustawień. Zrobione z developer.apple.com:

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

Ja również znaleźć ten zasób dla wyjaśnienia available settings

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

Jednak PROVISIONING_PROFILE brakuje indeksu dostępnych poleceń.

Polecenie I w końcu użyłem ustawień "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

Argumentem "PROVISIONING_PROFILE" musi być UUID, na przykład 'FAEB2AC2-33DB-4192-9711-06BD5ACD5ADD'. Można uzyskać ten identyfikator UUID z [iPhoneConfigUtility] (http://support.apple.com/downloads/#iphone%20configuration%20utility) lub po prostu otwórz plik .mobileprovision za pomocą vim – Xiao

+3

lub użyj '/ usr/libexec/PlistBuddy -c" Print UUID "/dev/stdin <<< $ (zabezpieczenie cms -D -i pathtofile.provision) ' –

0

Znalazłem świetne obejście dla budowania z jenkins.

Po pierwsze, przed powołaniem pracę, pobrać Jenkins plugin o nazwie:

parametryzowane wyzwalania Plugin

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

Gdy to zrobisz, które tworzą swoją pracę i podczas tworzenia zadania, wybierz

'Ta kompilacja jest parametryzowane' checkbox

utworzyć parametr String. Dzwonię do mojego CODE_SIGN_IDENTITY.

Więc pole Nazwa w parametrze ciąg powinien być:


Nazwa: CODE_SIGN_IDENTITY

Wartość domyślna: iPhone Developer: XXX XXXXX

Opis: Cokolwiek chcesz umieścić tam


Następnie w Pluginie Xcode znajdź "Cust" pole argumentów om xcodebuild.

w niestandardowej xcodebuild pola argumentów umieścić następującą wartość:

CODE_SIGN_IDENTITY = $ {CODE_SIGN_IDENTITY}

Finish konfigurowania pracy i powinno być wszystko gotowe!

Spowoduje to pominięcie problemu z białą przestrzenią. Wtyczka jest urządzeniem ratunkowym, ponieważ działa cudownie i możesz dostosować swoją kompilację za pomocą innych parametrów.

Powiązane problemy