BŁĄD ITMS-90164/90046: Nieprawidłowe uprawnienia do podpisywania kodu

82

Uwaga: opracowuję przy użyciu platformy Xamarin. Podobne pytanie opublikowane na forum Xamarin tutaj

Tworzę aplikację o nazwie, powiedz CompanyApp . Następnie utworzyłem dla niego identyfikator aplikacji com.Company.CompanyApp wraz z profilem obsługi administracyjnej dystrybucji, który używa odpowiedniego identyfikatora aplikacji. Wgrałem plik binarny i działał idealnie.

Następnie stworzyłem wersję demonstracyjną aplikacji (w zasadzie ta sama aplikacja z niewielkimi modyfikacjami, więc jest to to samo rozwiązanie i projekt, tylko inne ustawienia podpisywania pakietów), CompanyAppDemo z nowym identyfikatorem aplikacji com.Company.CompanyAppDemo , wraz z nowy profil aprowizacji dystrybucji, który używa nowego identyfikatora aplikacji. Zaktualizowałem opcje podpisywania pakietów iOS, aby używać nowego profilu aprowizacji i wygenerowałem IPA. Ale kiedy załadowałem to do modułu ładującego aplikacje, otrzymałem następujący błąd:

[2015-01-23 16:08:21 SGT] BŁĄD: BŁĄD ITMS-90164: „Nieprawidłowe uprawnienia do podpisywania kodu. Uprawnienia w podpisie pakietu aplikacji nie są zgodne z tymi, które są zawarte w profilu obsługi administracyjnej. profile, pakiet zawiera wartość klucza, która jest niedozwolona: „TEAMID.com.Company.CompanyApp” dla klucza „identyfikator-aplikacji” w „Payload / CompanyApp.app / CompanyApp” ”

[2015-01-23 16:08:21 SGT] BŁĄD: BŁĄD ITMS-90046: „Nieprawidłowe uprawnienia do podpisywania kodu. Podpis pakietu aplikacji zawiera uprawnienia do podpisywania kodu, które nie są obsługiwane w systemie iOS. W szczególności wartość„ TEAMID.com.Company ” .CompanyApp 'dla klucza' identyfikator-aplikacji 'w' Payload / CompanyApp.app / CompanyApp 'nie jest obsługiwana. Ta wartość powinna być ciągiem zaczynającym się od TEAMID, po którym następuje kropka'. ', Po której następuje identyfikator pakietu. ”

Debugowałem od dni, aby dowiedzieć się, ale bezskutecznie.

Zastanawiam się, dlaczego po podpisaniu nowego profilu błąd, który wyrzucił program ładujący aplikację, odnosi się do identyfikatora oryginalnej aplikacji TEAMID.com.Company.CompanyApp zamiast TEAMID.com.Company.CompanyAppDemo ? Czy to błąd w oprogramowaniu Xamarin, który powoduje odebranie niewłaściwego profilu aprowizacji, czy czegoś mi brakuje? Nie potrzebujesz innego certyfikatu dla innej aplikacji, prawda?

Należy pamiętać, że zawsze odświeżałem listę profili aprowizacji w XCode> Preference przed zmianą opcji podpisywania kompilacji systemu iOS w oprogramowaniu Xamarin.

yonasstephen
źródło

Odpowiedzi:

133

Jeśli ktoś trafia tutaj, szukając ERROR ITMS-90046, tak jak ja, moim rozwiązaniem było wyczyszczenie go i usunięcie wszystkich wstępnie skompilowanych frameworków (niestandardowych), a następnie ponowne zbudowanie.

Uwaga: opis błędu mówi o kluczu „środowisko aps” jako „programowanie”.

Edycja: rzeczywisty komunikat o błędzie

quarac
źródło
czy możesz to trochę bardziej wyjaśnić?
John
1
Tak, w mojej aplikacji używam niestandardowych struktur, są one dodawane w sekcji „fazy kompilacji” „zależności docelowe”, więc kiedy kompiluję aplikację, są one kompilowane i podpisywane. Mam również skrypt w każdym frameworku „fazy budowania”, który przenosi skompilowaną strukturę do innego folderu. Wydaje się, że wystąpił błąd w procesie podpisywania i myślę, że kluczową częścią było usunięcie frameworków, zmuszając kompilator do kompilacji i ponownego podpisania. Ten błąd nigdy się nie powtórzy.
quarac
Dzięki, pomogło mi to rozwiązać problem!
DiscDev
7
Wszystko, co musiałem zrobić, to wyczyścić ... To był nowy błąd po około 50 kompilacjach przesłanych do TestFlight
Phamer
2
Tworzenie na Xcode to niekończący się koszmar. Najwyraźniej modlitwa o pracę jest ważniejsza niż kodowanie.
Eduardo
63

Miałem ten sam problem i rozwiązałem go za pomocą prostego produktu -> Wyczyść .

David P.
źródło
1
dzięki zabrakło mi rozwiązania BŁĄD ITMS-90164: „Nieprawidłowe uprawnienia do podpisywania kodu. Uprawnienia w podpisie pakietu aplikacji nie są zgodne z uprawnieniami zawartymi w profilu aprowizacji. Zgodnie z profilem informacyjnym pakiet zawiera kluczową wartość, jest niedozwolone: ​​„prawda” dla klucza „get-task-allow” w „Payload / Palau Moja.app/Palau Moja” „BŁĄD ITMS-90164:„ Nieprawidłowe uprawnienia do podpisywania kodu. Uprawnienia w podpisie pakietu aplikacji nie są pasuje do tych, które są zawarte w profilu aprowizacji
Josep Escobar
Miał ten sam błąd co Josep i wyczyść -> archiwum -> załaduj ponownie, rozwiąż go. Dzięki za opublikowanie tego rozwiązania!
mały
Gdzie robisz Produkt-> Wyczyść ? W XCode czy Visual Studio? Rozwijam się przy użyciu Xamarin, BTW.
James Lavery
20

Jeśli ktoś trafi tutaj, wyszukując zarówno błąd ITMS-90164, jak i błąd ITMS-90046 za pomocą kluczy get-task-allow i asp-environment :

1

Jak powiedział David P, Produkt -> Wyczyść, zanim nowe Archiwum rozwiązało mój problem.

Dodam tylko, że w moim przypadku zauważyłem, że w wadliwym xarchive brakowało następującego pliku:

2

Przed wysłaniem tego pliku .xarchive do klienta w celu podpisania go na produkcji, możesz poszukać pliku zarchiwizowanego-rozszerzonego-uprawnienia.xcent i upewnić się, że się tam znajduje.

Bluezen
źródło
18

Wreszcie po 2 tygodniach wyrywania włosów.

Z pewnych powodów, jeśli nie ma klucza „identyfikator aplikacji” w Entitlements.plist, który jest ustawiony na TEAMID.com.Company.CompanyAppDemo , Xamarin użyje oryginalnego identyfikatora aplikacji, tj. TEAMID.com.Company.CompanyApp

Rozwiązaniem było więc dodanie identyfikatora aplikacji, określającego poprawny identyfikator pakietu aplikacji w Entitlements.plist. Następnie umieść plist w opcjach kompilacji> Podpisywanie pakietu iOS.

yonasstephen
źródło
13
xamarin to ogromny wzrost produktywności!
Anton Tropashko
8

Ten sam problem i rozwiązany za pomocą prostego produktu -> Wyczyść .

Adrien Brecheteau
źródło
8

Zmień to w Entitlements.plist:

<key>aps-environment</key>
<string>development</string>

Do tego:

<key>aps-environment</key>
<string>production</string>
KalleP
źródło
5

Może to być również spowodowane koniecznością wyrażenia zgody na nową umowę w iTunes connect. Zaloguj się do iTunes connect i na górze powinien pojawić się baner z prośbą o wyrażenie zgody na ostatnią zmianę umowy.

RickiG
źródło
1
Your'e a life saver :) Pokochaj niepowiązane komunikaty o błędach Apple
Yoav Schwartz
4

Dla mnie problemem był plik Entitlements.plist, który został automatycznie dodany i był pusty. Usunięto go z pola Uprawnienia niestandardowe i rozwiązano problem.

Widok podpisywania pakietu iOS w programie Visual Studio 2015

Cássio
źródło
3

Jeśli nie wybierzesz odpowiedniego certyfikatu przed zapakowaniem, zostanie zgłoszony BŁĄD ITMS-90164

Ustawienia kompilacji -> Tożsamość podpisywania kodu -> Wydanie -> Dowolny zestaw SDK systemu IOS

user5938649
źródło
2

Upewnij się, że wybrałeś cel aplikacji, a nie aplikację WatchKit podczas archiwizacji.

Ric Santos
źródło
2

Żadna z pozostałych odpowiedzi nie rozwiązała za mnie tego błędu, ale tak:

  1. Utwórz nową aplikację XCode i sprawdź jej ustawienia podpisywania kodu.

  2. Spróbuj ustawić swoją aplikację podobnie do domyślnych ustawień podpisywania i obsługi administracyjnej XCode 7 lub Xcode 8, tutaj pokazano XCode 7, zmieniono go ponownie w XCode 8.

udostępnianie i podpisywanie

  1. Jeśli powyższe nie wystarczy, może być konieczne zrobienie tego ponownie, ale tym razem, zanim to zrobisz, usuń wszystkie stare, wygasłe profile obsługi administracyjnej z bazy kluczy Apple lub usuń i ponownie zaloguj się na swoje konto programisty Apple (itunes) w XCode preferencje. Pamiętaj, aby WYJŚĆ XCODE i PONOWNIE URUCHOMIĆ po KAŻDEJ zmianie. Następnie ponownie dodaj swoje konto i pozwól XCode pobrać nowe informacje o podpisach i zespole.
Warren P
źródło
1

Próbowałem załadować kompilację z gałęzi git, która nie była master. Aby rozwiązać ten problem, połączyłem gałąź z wzorcem i ponownie zbudowałem. Wtedy udało mi się pomyślnie przesłać kompilację.

Kurt Anderson
źródło
1

Projekt zawierający 2 cele (z 2 identyfikatorami dewelopera, 2 uprawnieniami) może do tego doprowadzić. (Nie pytaj mnie, jak to się stało ...)

Podczas archiwizacji tymczasowo usuń inny plik uprawnień.

hstdt
źródło
1

Wykonanie odpowiedniego „Zakończ” Xcode i ponowne uruchomienie było ostatnią czynnością, która sprawiła, że ​​zadziałało.

Zmieniłem identyfikator pakietu (dla wersji demonstracyjnej) i otrzymałem ten sam błąd (jak opisano w pytaniu) podczas weryfikacji mojej zarchiwizowanej kompilacji. Używam Xcode. Samo zamknięcie Xcode i ponowne otwarcie projektu nie wystarczyło, ale pełne „Zakończ” było. Domyślam się, że coś zostało gdzieś w pamięci podręcznej.

Marcus
źródło
To zrobiło to dla mnie. XCode może czasami być tak wybredny.
Aaron Krauss
1

Wypróbowałem wszystko wymienione tutaj, okazało się, że problemem był mój .entitlementplik, który zawierał linie, których nigdy nie wstawiłem na pierwszym miejscu, po prostu zostały jakoś dodane.
Usunąłem te linie i spróbowałem ponownie, działało.

Nolan.K
źródło
1

Właśnie zmieniłem nazwę w uprawnieniach.plist wartość domen dostępu z applinks: htts: //domain.app.link do applinks: domain.app.link działa jak urok. Twoje zdrowie!

Sathish
źródło
0
  1. Przejdź do Build Phasew Xcode
  2. Usuń wszystkie ramy
  3. Dodaj je z powrotem
  4. Teraz buduj-> Archiwizuj-> Prześlij do App Store

Hurra, skończyłeś z tym. Problem rozwiązany

Mehul Thakkar
źródło
0

U mnie udało mi się to rozwiązać, wyłączając / ponownie włączając funkcję automatycznego podpisywania kodu:

wprowadź opis obrazu tutaj

Dave G.
źródło
0

U mnie w ustawieniach niestandardowych uprawnień w sekcji Podpisywanie pakietu iOS pojawił się nieprawidłowy plik. Usunąłem to i zadziałało!

JP Hochbaum
źródło
1
Zrzut ekranu byłby fajny.
Warren P
0

Po wielu godzinach poszukiwań znalazłem łatwe rozwiązanie.

Zamiast używać programu ładującego do załadowania aplikacji, użyłem Organizatora z XCode i działał bez żadnych ostrzeżeń podczas przesyłania!

Sebastien Filion
źródło
0

Mój problem polega na tym, że do utworzenia pliku IPA użyłem złego pakietu

Netero
źródło
0

Miałem dokładnie ten sam problem i był to dość głupi błąd. Nie chcę, aby ktokolwiek spędzał na tym czas, więc dla tego:

Błąd

Więc to, co się tutaj stało, to wpisanie „10” w celu wdrożenia. Zamiast tego powinno być 10,0. To właśnie spowodowało niesławny ERROR ITMS-90164/90046: Invalid Code Signing Entitlements for me!

Benjamin de Bos
źródło
0

Moje dwa centy.

Właśnie teraz utknąłem w tym problemie, ponieważ kiedy kopiuję mój identyfikator zespołu / identyfikator aplikacji z portalu dla programistów Apple, który wnosi dużo niepowiązanej wartości do pliku quallement.plist. Nie zauważyłem tego, ponieważ używałem Xcode do edycji entity.plist, a pole wejściowe nie wyświetla wszystkiego po pierwszym znaku nowego wiersza.

Proponuję użyć w tym przypadku zwykłego edytora tekstu dla entity.plist.

Dzięki, Samuel

Samuel Leung
źródło
0

Po wypróbowaniu wszystkich sztuczek przeczytać ostatnie dni w Stackoverflow usunąć plik „xxxxxx.entitlements” i zregenerować go ponownie. Klikam na Możliwości , wybieram WŁĄCZONE w domenach powiązanych i dodam „Domeny”. Następnie w Możliwości> Powiadomienia push kliknij Napraw „Dodaj uprawnienie do powiadomień push do pliku uprawnień”.

Dzięki temu ARCHIWUM powiodło się

Javier Amor Penas
źródło
0

Miałem taki link webcredentials:https://************.link , który powodował niepowodzenie przesyłania. Usunąłem go i problem został rozwiązany.

Septronic
źródło