2011-10-03 14 views
24

Stworzyłem w XCode prostą aplikację na iPhone opartą na nawigacji. Aplikacja buduje i działa prawidłowo pod XCode, ale nie mogę go skompilować z linii poleceń.Nie można zbudować projektu XCode z wiersza poleceń, ale można z XCode

Od terminalu wykonam:

xcodebuild -project George.xcodeproj -alltargets -parallelizeTargets -configuration Debug build 

ale otrzymuję ten błąd:

=== BUILD NATIVE TARGET George OF PROJECT George WITH CONFIGURATION Debug === 
Check dependencies 
[BEROR]Code Sign error: The identity 'iPhone Developer' doesn't match any valid certificate/private key pair in the default keychain 

** BUILD FAILED ** 


The following build commands failed: 
    Check dependencies 
(1 failure) 

Czy jest coś złego w sposób staram się go obsługiwać?

+0

Czy otrzymujesz ten sam błąd w Xcode, jeśli tworzysz dla iOSDevice? – Saran

+0

Czy otrzymujesz ten sam błąd w Xcode, jeśli tworzysz konfigurację Debugowanie? –

Odpowiedz

24

Oprócz unloc królem pęku kluczy, możesz również określić tożsamość kodów (lub ustawić go w swoim celu). Certyfikaty rozwoju mają postać "iPhone Developer: Company Inc", certyfikaty dystrybucji, takie jak ten "iPhone Distribution: Company Inc".

xcodebuild -project George.xcodeproj -alltargets -parallelizeTargets -configuration Debug build CODE_SIGN_IDENTITY='iPhone Developer: Company Inc' 
+0

To zadziałało dla mnie, jednak usunąłem także wszelkie wygasłe certyfikaty, które wciąż były zawieszone w pęku kluczy. – Pellet

4

Najprawdopodobniej twój pęku kluczy jest zablokowany. Spróbuj odblokowywania go przed wykonaniem skryptu, można to zrobić z linii poleceń (tuż przed budową):

security unlock -p YourPasswordToKeychain ~/Library/Keychains/login.keychain

Uwaga, używam „login” pęk kluczy, które mogą być różne w przypadku

Ponadto, jeśli to nie pomoże, spróbuj usunąć wszystkie inne parametry i po prostu zostawić smth tak:

xcodebuild -configuration Debug i czystej wcześniej xcodebuild -configuration Debug clean

+0

Dobrze zrobiłem też: Keychain///Uzyskaj informacje/Zaufanie/Kiedy podpisywanie kodu, zawsze ufaj. – AnneTheAgile

1

W zależności od celu skryptu, może to również być wystarczająca, aby po prostu wyłączyć podpisywanie kodu w skrypcie, co można zrobić poprzez ustawienie CODE_SIGN_IDENTITY = „”

xcodebuild -project George.xcodeproj -alltargets -parallelizeTargets -configuration Debug build CODE_SIGN_IDENTITY='' 

Oczywiście, że nie jest dobrze, jeśli próbujesz zrobić ostateczną kompilację ze skryptu, ale może to być dobre, jeśli próbujesz stworzyć testową wersję do ciągłej integracji (np. z Jenkins, aby upewnić się, że nikt niczego nie złamał).

3

Z wiersza polecenia można zbudować kompilację ukierunkowaną na symulator bez problemów z podpisywaniem.

To rozwiązało problem podpisu dla mnie:

xcodebuild -sdk iphonesimulator 

Źródło: xcodebuild Code Sign error: No matching codesigning identity found:

To szczególnie przydatne, jeśli budować linia poleceń jest nie tylko do normalności sprawdzić kod źródłowy w ciągłej konfiguracji integracji.

1

miałem błąd archiwizacji podobne, ale nie całkiem tak samo jak oryginalny post:

** ARCHIVE FAILED ** 


The following build commands failed: 
    Check dependencies 
(1 failure) 

okazało się być brakuje Application Service (w moim przypadku usługa HealthKit/prawo), które w moim identyfikatorze aplikacji programistycznej włączono, ale nie mój identyfikator aplikacji do produkcji.

włączyć usługi w państwach Center firmy Apple: https://developer.apple.com/account/ios/identifiers/bundle/bundleList.action

3

Używam Shenzhen, to pokazuje ten błąd też.

Okazuje się, że dzieje się to po podłączeniu iPada, ale nie ma go w profilu udostępniania. Podając --verbose do shenzhen. to pokazuje:

Check dependencies 
Code Sign error: No matching provisioning profiles found: None of the valid  provisioning profiles include the devices: 
XXXX’s iPad 
CodeSign error: code signing is required for product type 'Application' in SDK 'iOS 8.3' 

odłączyć urządzenie, wszystko działa dobrze ...

0

ta może być ustalona w Xcode 8.0 poprzez zmianę z "iOS dystrybucji" do "rozwoju" iOS w Xcode. Wygląda na to, że nie powinno działać, ale z jakiegoś powodu.

Powiązane problemy