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.
źródło
Miałem ten sam problem i rozwiązałem go za pomocą prostego produktu -> Wyczyść .
źródło
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 :
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:
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.
źródło
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.
źródło
Ten sam problem i rozwiązany za pomocą prostego produktu -> Wyczyść .
źródło
Zmień to w Entitlements.plist:
<key>aps-environment</key> <string>development</string>
Do tego:
<key>aps-environment</key> <string>production</string>
źródło
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.
źródło
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.
źródło
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
źródło
Upewnij się, że wybrałeś cel aplikacji, a nie aplikację WatchKit podczas archiwizacji.
źródło
Żadna z pozostałych odpowiedzi nie rozwiązała za mnie tego błędu, ale tak:
Utwórz nową aplikację XCode i sprawdź jej ustawienia podpisywania kodu.
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.
źródło
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ę.
źródło
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ń.
źródło
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.
źródło
Wypróbowałem wszystko wymienione tutaj, okazało się, że problemem był mój
.entitlement
plik, 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.
źródło
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!
źródło
Build Phase
w XcodeHurra, skończyłeś z tym. Problem rozwiązany
źródło
U mnie udało mi się to rozwiązać, wyłączając / ponownie włączając funkcję automatycznego podpisywania kodu:
źródło
U mnie w ustawieniach niestandardowych uprawnień w sekcji Podpisywanie pakietu iOS pojawił się nieprawidłowy plik. Usunąłem to i zadziałało!
źródło
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!
źródło
Mój problem polega na tym, że do utworzenia pliku IPA użyłem złego pakietu
źródło
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:
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!
źródło
Powinieneś sprawdzić swoje uprawnienia. To jest jak plik plist. Edytuj go do rozwoju i usuń dodatkowe pola.
wprowadź opis obrazu tutaj
źródło
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
źródło
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ę
źródło
Miałem taki link
webcredentials:https://************.link
, który powodował niepowodzenie przesyłania. Usunąłem go i problem został rozwiązany.źródło