Xcode 5: Błędy uprawnień do podpisywania kodu

149

Zbudowałem nową aplikację, która będzie obsługiwać IOS 7. Mam nowy XCode 5 GM i próbowałem podpisać swoje aplikacje przy użyciu mojego nowego profilu udostępniania i certyfikatu dystrybucji, ale mam problem z dystrybucją. Ciągle otrzymuję następujący błąd:

„Nieprawidłowe uprawnienia do podpisywania kodu. Uprawnienia w sygnaturze Twojego pakietu aplikacji nie są zgodne z uprawnieniami zawartymi w profilu informacyjnym. Zgodnie z profilem informacyjnym pakiet zawiera niedozwoloną wartość klucza:„ [XXXX.com.sample .company] 'dla klucza' keychain-access-groups ”.

Również ten sam błąd dla wartości klucza o nazwie application-identifier.

Zrzut ekranu błędu:

wprowadź opis obrazu tutaj

Benjamin de Bos
źródło

Odpowiedzi:

208

Rozwiązaniem jest nowa opcja w Xcode 5, która mówi o profilu aprowizacji. Po prostu ustaw profil aprowizacji celu projektu na właściwy i zadziała.

wprowadź opis obrazu tutaj

Benjamin de Bos
źródło
6
Aby dodać do tej odpowiedzi - mam oba typy dystrybucji i wydania dla profilu aprowizacji. Wystąpił ten sam błąd, ponieważ miałem ustawiony profil deweloperski dla typu wydania (myślałem, że używam typu dystrybucji i nie zauważyłem typu wydania). Gdy ustawiłem to na moim profilu dystrybucji, zadziałało.
Bek
4
Aby dokładniej wyjaśnić tę odpowiedź, próbowałem ustawić mój profil obsługi administracyjnej i tożsamość podpisywania kodu w każdym wierszu najwyższego poziomu, używając widoku łączonego. W ten sposób nadal przyciągnięto go z powrotem do <Wiele wartości>. Kiedy jednak rozszerzyłem oba wiersze, zobaczyłem podrzędne wiersze „Any iOS SDK” dla każdej konfiguracji ustawione na None, chociaż wiersze Debug / Release zawierały właściwą tożsamość profilu / podpisywania. Archiwizacja w tym stanie nadal dawała mi błąd, dopóki wyraźnie nie ustawiłem wszystkich wierszy „Any iOS SDK” na ich prawidłowe wartości.
qix
1
Spędziliśmy nad tym kilka dni ! złą rzeczą o tym wciąż mamy do wyboru ten sam profil ponownie podczas budowy IPA. Jak się o tym dowiedziałeś, Benjamin?
cregox
2
Niestety u mnie to nie działa. Sprawdziłem moje profile na stronie developer.apple.com i mam włączone zakupy w Game Center i In App. Ja też nie używam i zastanawiam się, czy to może być problem.
JScarry
4
Aby dodać dalsze wyjaśnienie, zwróć uwagę, że Xcode umożliwia wybór informacji o profilu obsługi administracyjnej zarówno dla projektu, jak i celu . Musisz upewnić się, że zmieniasz ustawienia celu, a nie tylko projektu.
Brian Stormont,
55

Jeśli jesteś podobny do mnie i myślisz, że próbowałeś WSZYSTKIEGO , zarchiwizowałeś swój projekt ponad dziesięć razy, uderzyłeś głową w klawiaturę i nadal otrzymujesz ten błąd. Zrób sobie przysługę i po prostu uruchom ponownie XCode , zadziałało dla mnie. Czasami Apple ... Nienawidzę cię.

VGruenhagen
źródło
Zbudowałem dwie różne aplikacje w jednej sesji xcode i otrzymałem 1000 błędów. ponowne uruchomienie zadziałało. Dziękuję Ci!
donmarkusi,
Na mnie też to zadziałało. Używam Xcode 6.3. Nie udało mi się wybrać konta deweloperskiego Apple do podpisywania kodu. Całkowicie niepowiązany komunikat o błędzie był wyświetlany za każdym razem, gdy „identyfikator aplikacji na iOS„ xxxxxxxxx ”nie obsługuje zmian w funkcji map”. Prosty restart xcode naprawił to dla mnie.
Sahil
3
Gdybym mógł zagłosować za tobą 1000 razy, zrobiłbym to. To zadziałało dla mnie. Stało się to w XCode 7.1.
Manu Kanthan
25

Wykonałem wiele z powyższych kroków, ale to, co w końcu zadziałało, to odświeżenie moich profili w Xcode. Nie wiem, dlaczego było to konieczne, ponieważ profil dystrybucji mojej aplikacji był już widoczny na liście. Oto kroki:

  1. Preferencje Xcode
  2. Zakładka Konta
  3. Wybierz swój Apple ID
  4. Kliknij przycisk Wyświetl szczegóły w panelu szczegółów Apple ID
  5. Naciśnij przycisk Odśwież w lewym dolnym rogu
Joe Regan
źródło
2
Po wykonaniu tej czynności należy również ponownie uruchomić polecenie Buduj i archiwizuj, aby upewnić się, że nowy profil został zastosowany. (Przynajmniej to było dla mnie konieczne.)
Brent Royal-Gordon
12

W moim przypadku aktywowałem te same możliwości w Xcode, co w usługach aplikacji w developer.apple.com. To działa dla mnie

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj

novecapa
źródło
To właśnie zadziałało - nie mogę ich wyłączyć w centrum programistów i wygląda na to, że iOS 7.0 kompilował się z Xcode 5.1.1 wymagał ich włączenia.
Matt H
6

W moim przypadku (przepraszam) zmieniłem „Zespół” na „Brak” w -> Ogólne -> Tożsamość

W innym przypadku musiałem zmienić tę tożsamość z „Brak” na konto programisty zarządzające tożsamościami i profilami.

Wygląda na to, że Xcode czasami bardzo źle wpływa na podpisywanie kodu. Albo my, zwykli śmiertelnicy, po prostu nie jesteśmy wystarczająco sprytni, by zrozumieć, co robi, oczywiście. Nie poddawaj się, wszyscy czasami przechodzimy przez tortury podpisywania kodu!

RickJansen
źródło
Wow, uratowałeś mi wieczór, dziękuję. Ale ... dlaczego to zadziałało?
Martin
Dlaczego to zadziałało… Myślę, że Xcode to niezwykle złożony produkt, a kwestie związane z tożsamością i profilowaniem dostaw były od samego początku skomplikowane. Myślę, że nikt nie ma już pełnego zrozumienia wzajemnych relacji. Ja nie. Czasami jest to metoda prób i błędów, jak pokazuje ten wątek.
RickJansen
5

W moim przypadku musiałem ustawić prawidłowy profil udostępniania dla wydania, a następnie musiałem ponownie uruchomić Xcode. Przed ponownym uruchomieniem miał ten sam profil informacyjny i nie działał. Tak więc czasami ponowne uruchomienie może zdziałać cuda. Może to komuś pomoże.

Beny Boariu
źródło
3

Jeśli ktoś korzysta z GameCenter, sprawdź tę sekcję w swoim celu. Pracowałem z jakimś starym projektem i były 2 błędy (ale wszystko działało dobrze). Wyłączenie i ponowne włączenie rozwiązało ten problem.wprowadź opis obrazu tutaj

Najprawdopodobniej ta akcja dodaje uprawnienia Game Center do identyfikatora aplikacji i obsługuje ją samodzielnie.

beryl
źródło
3

1.Przejdź do folderu projektu, usuń pliki * .entitlements. 2. następnie przejdź do celu projektu xcode -> ustawienia kompilacji -> uprawnienia do podpisywania kodu - usuń wartości 3. wyczyść 4. uruchom

Vlad 25 WLD
źródło
3

Ach, ten wspaniały błąd. Dla mnie ilekroć widzę ten błąd, sprawdzam następujące rzeczy:

1. Zezwól XCode na dostęp do informacji o Twoim profilu informacyjnym przez cały czas - jeśli XCode ciągle pyta, kiedy go uruchamiasz, o dostęp do prywatnych plików Twojego komputera, aby mógł uzyskać informacje o profilu informacyjnym z opcjami zezwalającymi na dostęp zawsze, nie teraz, lub tylko jeden raz - ustaw ZAWSZE ZEZWÓL na dostęp

2. Jeśli masz jakieś stare pliki z uprawnieniami krążące po Twoim projekcie, pozbądź się ich i wszelkich śladów - jeśli zobaczysz plik .entitlements w swoim projekcie, usuń go (lub przynajmniej usuń odniesienie do niego, jeśli nie jesteś pewien jesteś gotowy, aby go całkowicie usunąć), a następnie upewnij się, że wiersz „Uprawnienia do podpisywania kodu” w sekcji „Podpisywanie kodu” w Ustawieniach kompilacji jest pusty

3. Sprawdź swoje usługi aplikacji online i dopasuj je do swoich usług w XCode dla aplikacji - przejdź do Apple Member Center i sprawdź identyfikator aplikacji, kliknij aplikację, aby wyświetlić jej „usługi aplikacji” i zobaczyć, co zaznaczone, a następnie przejdź do XCode i sprawdź sekcję `` Możliwości '', aby upewnić się, że mają tę samą listę usług Apple w obu

4. Upewnij się, że przypisałeś prawidłowy profil aprowizacji do swojej aplikacji przed sprawdzeniem poprawności - dokładnie sprawdź swój profil aprowizacji dla swojej aplikacji w Apple Member Center, upewnij się, że nie wygasł, ma właściwy identyfikator aplikacji z poprawnym identyfikatorem pakietu i dystrybucją . Pobierz i kliknij nowy profil aprowizacji, aby upewnić się, że XCode go ma, lub przejdź do XCode> Preferencje> Konta> kliknij swoje konto i „Wyświetl szczegóły”, a następnie kliknij przycisk w dolnym rogu, aby zsynchronizować wszystkie profile z XCode. Powinieneś mieć profil dostępny do wyboru w sekcji „Podpisywanie kodu”. Po uzyskaniu prawidłowego profilu obsługi administracyjnej możesz ustawić w wierszach „Tożsamość podpisywania kodu” odpowiednią opcję dla tego profilu informacyjnego.

Uwaga - jeśli robisz certyfikat dystrybucyjny, może pomóc ustawienie wszystkich linii „Code Signing Identity” na tożsamość, której używasz do dystrybucji, w tym wiersze debugowania

5. JEŚLI WSZYSTKO INNE NIE POWIODŁO SIĘ - Wyczyść projekt i uruchom ponownie XCode, a niektóre magiczne elementy Apple mogą po prostu działać poprawnie, gdy następnym razem otworzysz projekt i spróbujesz zweryfikować

ColossalChris
źródło
2

Jeśli budujesz stary projekt 3.1.5, Xcode 5 ma kilka błędów, które niestety uniemożliwiają Benjaminowi odpowiedź, ponieważ nie ma profili obsługi administracyjnej do wyboru. Po wielu późnych godzinach udręczonego czytania plików projektu Xcode wpadłem na to rozwiązanie, które zadziałało:

  • W okienku Narzędzia (po prawej) w Xcode 5, w części Dokument projektu, zmień z kompatybilnego z Xcode 3.1 na kompatybilny z Xcode 3.2.
  • Wpisz nazwę swojej organizacji.
  • Zamknij projekt.
  • Otwórz plik projektu, np open -a TextEdit path/to/name.xcodeproj/project.pbxproj
    • Usuń dwie klauzule Distribution ( isa=XCBuildConfiguration).
    • Usuń dwie towarzyszące linie w buildConfiguration (jeden na PBXNativeTargeti jeden na wejściu PBXProject XCConfigurationLists)

Teraz możesz ponownie otworzyć, zarchiwizować i przesłać do App Store - voilà! To znowu działa!

Jak myślę, że to działa

Zakładam, że to działa, ponieważ Apple gdzieś po drodze zdecydowało się porzucić potrzebę jakiejkolwiek oddzielnej konfiguracji dystrybucji, co jest dobrą rzeczą. Kiedy archiwizuję, Xcode automatycznie podpisuje kod do dystrybucji. W pierwszej kolejności tak powinno zostać zaimplementowane, szkoda tylko, że Apple nie może uczynić automatycznej migracji częścią IDE; zamiast tego zmuszają nas, programistów, do spędzenia wielu dziesięcioleci, aby te rzeczy działały.

Jonas Byström
źródło
2

Zmagam się z tym problemem od ponad dnia, próbując wszelkiego rodzaju rozwiązań sugerowanych tutaj i gdzie indziej w Internecie. Nic nie działało ...

Ale w końcu udało mi się rozwiązać problem!

Problem, jaki miałem, dotyczył starej aplikacji, której nie dotykałem od ponad 3 lat, a teraz miałem wydać długo oczekiwaną aktualizację. Odkąd wypuściłem aplikację, Apple aktualizuje sposób działania certyfikatów i identyfikatora aplikacji. Wprowadzili koncepcję identyfikatora zespołu, która wydaje się być zalecana. W szczególności w witrynie Apple „Certyfikaty, identyfikatory i profile” od tamtego czasu zaszło wiele zmian.

Tam zdałem sobie sprawę, że profil aprowizacji, którego używałem do dystrybucji App Store, był połączony z identyfikatorem aplikacji, ED8xxxxxxx.com.rostsolutions.*ale patrząc na identyfikator aplikacji dla gry, którą miałem zamiar przesłać, zauważyłem, że identyfikator aplikacji był ATMxxxxxxx.com.rostsolutions.Swisch. Więc prefiks identyfikatora aplikacji nie pasuje! To wydawało się być przyczyną problemu. Więc ATMxxxxxxx.com.rostsolutions.Swischzamiast tego utworzyłem nowy profil aprowizacji połączony z identyfikatorem aplikacji . Korzystając z tego profilu aprowizacji, pomyślnie przesłałem aplikację do App Store, a teraz trzymam kciuki, że wszystko inne działa dobrze po stronie Apple.

(Najpierw próbowałem połączyć się z nowym profilem obsługi administracyjnej z identyfikatorem wieloznacznym ATMxxxxxxx.com.rostsolutions.*, ale to nie zadziałało).

Zastanawiające mnie jednak jest to, że kiedy patrzę na starą aplikację w iTunes łączy się i przechodzę do szczegółów binarnych, pojawia się informacja, że ​​identyfikator aplikacji to ED8xxxxxxx.com.rostsolutions.Swisch. Dlaczego więc strona „Certyfikaty, identyfikatory i profile” podaje identyfikator aplikacji jako ATMxxxxxxx.com.rostsolutions.Swisch?

Daniel
źródło
Dzięki za wysłanie tego Daniela. Widzę podobne zachowanie, które uniemożliwia użycie żądanych certyfikatów i profili. Za każdym razem, gdy pobieram certyfikat lub zezwalam na to Xcode, pojawia się „widmowy” identyfikator zespołu, który „przerywa” możliwości (wykorzystanie) iCloud w moim przypadku. Nie ma jeszcze dla mnie rozwiązania.
David
O MÓJ BOŻE! To samo dzieje się z nami w ponad 50 aplikacjach! Ugh, drużyna widm nas zabija. Dlaczego Apple Dlaczego! ????
Sukima
2

Mój problem został rozwiązany poprzez usunięcie mojego Apple ID z Preferencji-> Konta, a następnie dodanie go ponownie. Następnie wszystkie moje pliki profilu informacyjnego pojawiły się w panelu narzędziowym Wyświetl szczegóły. Przez pomyłkę wybrałem „Mac Team Provisioning Profile: *” zamiast rzeczywistego profilu udostępniania dystrybucji dla projektu, myśląc, że jest to wybór ogólny. Pliki obsługi muszą być specyficzne dla projektu. Aha, i przy okazji, upewnij się, że Twój profil obsługi administracyjnej ma odpowiednie uprawnienia (na przykład Mapy). Udało mi się wypuścić aplikację z mapami OSX bez uprawnień i Apple ją zatwierdziło - ale żadne Mapy nie pojawiły się w wersji produkcyjnej!

Brainware
źródło
1

W moim przypadku miałem ten sam problem, moim rozwiązaniem była zmiana „Release Provisioning Profile” w ustawieniach kompilacji przed zrobieniem archiwizacji. Robię to dwa razy, raz do dystrybucji w App Store, a drugi do dystrybucji Ad Hoc. Dodam też komentarz do moich archiwów. Mój wniosek jest taki, że coś jest zepsute w „ponownym podpisywaniu archiwum”.

Zabijaka
źródło
1

Na tej stronie jest bardzo dobry poradnik, jak rozwiązać ten problem .

Mówi, że ten problem może wystąpić, gdy identyfikator pakietu projektów różni się od tego, który wprowadziłeś w witrynie iTunes Connect .

130e13a
źródło
1

Myślę, że xcode 5 używa „wydania” zamiast „dystrybucji”, którą sam stworzyłeś.

superarts.org
źródło
1

Jeśli wszystko powyżej nie zadziałało (w moim przypadku po kilku dniach nie udało się wszystkiego wypróbować) mam tylko jedną aplikację na Maca. OSTROŻNIE PRZY ODWOŁANIU!

1) Odwołaj ręcznie wszystkie „Dystrybucja aplikacji na komputery Mac” i „Dystrybucja instalatorów dla komputerów Mac”
2) Wyczyść odpowiednie certyfikaty i klucze otwarte w pęku kluczy ( Ostrzeżenie: wyeksportuj przed usunięciem)
3) Uruchom ponownie Xcode 4) Przejdź do (w Safari) developer.apple .com -> certyfikaty itp. 5) Utwórz CertificateSigningRequest.certSigningRequest w Keychain-> Certificate Assistant
6) Utwórz ręcznie na developer.apple.com zarówno „Mac App Distribution”, jak i „Mac Installer Distribution” z Twoim * .certSigningRequest
7) Provisioning Profile -> Dystrybucja -> utwórz / napraw niestandardową rezerwę dla AppStore (specjalnie nazywam to „profilem obsługi Mac dla AppStore”
8) Xcode -> Ustawienia -> Konto -> Twoje konto ->Odśwież 9) Xcode Clean -> Archive -> Validate

WINSergey
źródło
1

Zmagałem się z podobnym problemem (budowałem dla dystrybucji Ad-Hoc). Jedyną rzeczą, która zmieniła się od ostatniego pomyślnego wdrożenia, było dodanie dwóch urządzeń do profilu informacyjnego.

Po dwukrotnym i potrójnym sprawdzeniu wszystkich ustawień kompilacji ponownie wygenerowałem profil aprowizacji (bez zmiany niczego), ponownie pobrałem i wszystko działało dobrze.

Zwróć więc uwagę na siebie: jeśli nie ma logicznego wyjaśnienia, zawsze możesz wypróbować stare, dobre IT voodoo.

Polecam również iPhone Configuration Utility , które pomimo swojej nazwy jest przydatne do sprawdzania, jakie profile udostępniania masz na komputerze.

Tomek Cejner
źródło
1

BŁĄD ITMS-9000: „Ten pakiet jest nieprawidłowy. Nowe aplikacje i aktualizacje aplikacji przesłane do App Store muszą być zbudowane przy użyciu publicznych (GM) wersji XCode 5.1.1 lub nowszych oraz iOS 7 SDK. Nie przesyłaj aplikacji utworzonych za pomocą oprogramowania w wersji beta.

hi0001234d
źródło
0

Jeśli wielu programistów używa tego samego konta centrum członkowskiego. Jeden z nich nie może użyć certyfikatu utworzonego przez innych, ponieważ użył żądania certyfikatu utworzonego przy użyciu ich komputerów.

Musisz użyć certyfikatu utworzonego przez Ciebie (żądanie certyfikatu utworzone za pomocą Twojego komputera).

Alternatywnie, powiedz im, aby przesłali Ci profil programisty. nie jestem pewien nazwy. aby użyć certyfikatu utworzonego na innym komputerze.

hasan
źródło
0

Podpisywanie kodu Uprawnienia występują, ponieważ Twój zasób nie zawiera pliku uprawnień w zasobach. Po prostu przejdź do ustawień kompilacji i wyszukiwania podpisywania kodu Uprawnienia usuń wpis do debugowania i wydania, ponownie zbuduj projekt, zobaczysz, że nie ma błędu. Twoje zdrowie

Shauket Sheikh
źródło
-1

Miałem ten sam problem, ale nic tu napisanego nie pomogło. Jednak znalazłem prosty sposób, który zadziałał dla mnie. Oto jak to zrobić:

1) W ustawieniach kompilacji projektu i obiektów docelowych wybierz opcję „Brak” dla wszystkich profili obsługi administracyjnej i opcję „Nie podpisuj kodu” dla wszystkich tożsamości podpisujących kod.

2) Teraz wybierz Cel i przejdź do ustawień kompilacji. W ustawieniu wydania tożsamości Code Signing Identity wybierz „iOS Distribution” dla „Any iOS SDK”. Następnie w ustawieniu Wydanie profilu obsługi administracyjnej wybierz swój profil dystrybucji dla „Dowolnego pakietu SDK systemu iOS”. Następnie ustawienie wydania tożsamości podpisywania kodu powinno automatycznie zmienić się na „Dystrybucja iPhone'a”.

3) Zarchiwizuj kompilację i zweryfikuj. Teraz powinno działać dobrze. Otóż ​​to!

jimpavloff
źródło