2015-04-10 13 views
11

Niedawno zaktualizowałem kod XCode 6.3 i zacząłem mieć pewne dziwne problemy z podpisywaniem kodu. Czasami XCode zacznie narzekać na problemy z podpisywaniem kodu. I albo będzie miał problemu takiego:Kod XCode 6.3 Problemy z podpisywaniem kodu po aktualizacji

invalid or unsupported format for signature ... Command /usr/bin/codesign failed with exit code 1 

lub

... Command /usr/bin/codesign failed with exit code 11 

nie można odnaleźć jeszcze wzór, ale wygląda na problem z kodem XCode znak, jak czasami po czyszczeniu i ponownym uruchomieniu XCode będzie działać.

Nie zmieniłem żadnych ustawień dotyczących podpisywania kodu. Struktura projektu jest dość skomplikowana, odnosi się do projektów i strączków.

Każda pomoc doceniona.

** Aktualizacja **

Nie pomogło mi usunąć dane pochodzące lub ponownie XCode. Ale zadziałało, gdy usunąłem projekt i pobrałem go z Git. To usunęło pliki XCode, które nie są zatwierdzone do git.

Znów po czyszczeniu przestał działać. Oraz w dziennikach konsoli mam coś takiego:

codesign[4111]: Internal error unloading bundle CFBundle 0x7fb44a40adc0 <(null)> (framework, not loaded) 

** Kolejna aktualizacja **

Znalezione na Twitterze kogoś, kto ma ten sam problem. Wygląda na to, że problem jest spowodowany przez opcję --deep w podpisywaniu kodu.

https://github.com/atom/atom-shell/issues/1396

Rozwiązanie to nie kod aplikacji i ramy znak wewnątrz --deep. Ale raczej kod podpisują każdą strukturę osobno.

http://furbo.org/2013/10/17/code-signing-and-mavericks/

+0

możliwe duplikat: http: // stackoverflow.com/questions/1090288/usr-bin-codesign-failed-with-e xit-code-1 – gbuzogany

+0

Miałem ten sam problem i przejście do Preferencji-> Konta-> Wyświetl szczegóły, a następnie naciśnięcie przycisku odświeżania w lewym dolnym rogu ustaliło dla mnie. – doctorBroctor

Odpowiedz

4

Po prostu to się ze mną, a po najnowszej aktualizacji X-Code. Ale X-Code już od dłuższego czasu doradzał mi, żebym zaktualizował ustawienia mojego projektu, po prostu nie dokończyłem. Podany link wyjaśnia to dobrze.

To faktycznie pojawia się jako problem w nawigatorze, a X-Code zaproponuje, aby naprawić go automatycznie po wybraniu problemu. Trzeba tylko usunąć opcję --deep z własnych ustawień kompilacji.

To działało z moimi 2 frameworkami firm trzecich, Sparkle i Siphon.

+0

Nie można łatwo usunąć --deep. Ponieważ używam aplikacji pomocniczej, inny projekt jest zawarty w ramkach i widgetach. Będą musieli podpisać je wszystkie osobno. Ale dobrze wiedzieć, że to jest przyczyna i trzeba ją usunąć. – Krzysztof

2

Problem został spowodowany przez - podanie opcji podpisania kodu i uprawnień.

Aby rozwiązać ten problem, musiałem ręcznie kodować podpisywanie frameworków. Wymagało to dodanie nowego skryptu run fazę budowania i uruchomiony skrypt podobny do tego:

IDENTITY="HEX_IDENTITY" 

export CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate" 

FRAMEWORKS_LOCATION="${BUILT_PRODUCTS_DIR}"/"${FRAMEWORKS_FOLDER_PATH}" 
EXECUTABLES_LOCATION="${BUILT_PRODUCTS_DIR}"/"${EXECUTABLE_FOLDER_PATH}" 

codesign --verbose --force --deep --verify --sign "$IDENTITY" "$EXECUTABLES_LOCATION/MY_HELPER_APP.app" 
codesign --verbose --force --deep --verify --sign "$IDENTITY" "$FRAMEWORKS_LOCATION/MY_FRAMEWORK/Versions/A" 

HEX_IDENTITY można uzyskać za pomocą polecenia powłoki:

security find-identity 

Spowoduje to wyświetlenie listy podpisanie tożsamości z ich liczby szesnastkowe.

Po wyeksportowaniu aplikacji jako app zweryfikowane kod podpisaniu z poleceniem:

codesign --verify --verbose --deep MyApp.app 
spctl --verbose --assess --type execute MyApp.app 

Referencje:

Powiązane problemy