Błąd kodu: nie można znaleźć profilu obsługi administracyjnej po usunięciu profilu, który wygasł

500

Próbowałem odbudować aplikację, która działała wczoraj. Dostałem wiadomość, że profil wygasł, więc usunąłem go z iPoda i iTunes. Kiedy wybrałem nowy profil (z oznaczeniem * w identyfikatorze), teraz pojawia się błąd:

Błąd znaku kodu: nie można znaleźć profilu obsługi (długi ciąg).

czego mi brakuje? Przejrzałem powiązane pytania i jeszcze nie widziałem tego scenariusza.

quantumpotato
źródło

Odpowiedzi:

856

Czasami twój plik projektu xcode zostaje pomieszany, szczególnie jeśli masz stary projekt i najpierw utworzyłeś go ze starszą wersją xcode / iphone sdk. To, co musisz zrobić, to otworzyć plik projektu w edytorze tekstu, wyszukać „długi ciąg” od błędu i ręcznie usunąć ten wiersz. W rzeczywistości powinieneś po prostu wymazać każdą linię wskazującą dowolny profil udostępniania. Następnie ponownie otwórz projekt w xcode, przejdź do ustawień i ponownie wybierz nowy profil. Przez większość czasu rozwiązuje to takie problemy. Linie wskazujące profile udostępniania będą wyglądać następująco:

PROVISIONING_PROFILE = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
Brad The App Guy
źródło
210
Plik .xcodeproj jest w rzeczywistości katalogiem, podobnie jak pakiet aplikacji. Jeśli klikniesz go prawym przyciskiem w wyszukiwarce, możesz wybrać zawartość pakietu show, a następnie zobaczysz kilka plików w środku (lub w terminalu po prostu cd). Rzeczywisty plik projektu to plik z rozszerzeniem .pbxproj. Po otwarciu w edytorze tekstów wiersze, których szukasz, powinny zaczynać się od 'PROVISIONING_PROFILE = lub' '„PROVISIONING_PROFILE [sdk = iphoneos *]" ='. Usuń je wszystkie, a wtedy powinieneś być dobry.
Brad The App Guy
2
Odkryłem, że oprócz powyższego musiałem usunąć wszystkie moje profile, ponownie pobrać je z portalu administracyjnego i ponownie zaimportować do XCode. Następnie w Ustawieniach kompilacji / Podpisywaniu kodu wybierz odpowiedni profil dla wszystkich konfiguracji kompilacji.
Jay Imerman,
11
Nadal cenna rada z XCode4 w 2012 roku. Dzięki!
Aleksiej Rusakow
6
... aaaa i wciąż cenna rada z Xcode6 w 2014 roku! Dziękuje bardzo!
Tom van Zummeren
4
Jedyną rzeczą, która działała dla mnie: Preferencje -> Konta -> Wyświetl szczegóły -> Odśwież. To przeładowało wszystkie profile udostępniania z portalu deweloperskiego. Mam nadzieję, że to komuś pomoże
blackhawk4152
129

Oto prostsze rozwiązanie, które zadziałało dla mnie i nie wymaga ręcznej edycji pliku projektu:

W XCode w okienku „Grupy i pliki” rozwiń „Cele” i kliknij dwukrotnie cel aplikacji. Spowoduje to wyświetlenie okienka Informacje dla celu. W sekcji „Kompilacja” sprawdź sekcję „podpisywanie kodu” dla wszystkich starych profili i zamień na prawidłowy.

Pamiętaj, że różni się to od dwukrotnego kliknięcia ikony projektu i zmiany profilu z tego miejsca. Całkiem niesamowite :)

Lub ja

Lub ja
źródło
1
Dzięki! Spróbuję to następnym razem :)
quantumpotato,
6
i upewnij się, że najpierw
wybierasz
1
To nie zawsze działa. Czasami nadal musisz wejść i zmienić to ręcznie, tak jak pokazuje to pierwsza odpowiedź.
SpaceTrucker 30.09.11
Jeszcze jedna uwaga do echa SpaceTrucker: ta metoda nie zawsze działa. Przyjęta odpowiedź gwarantuje, że Xcode przestanie szukać tego fantomowego profilu.
Simone Manganelli,
Odkryłem, że oprócz powyższego musiałem usunąć wszystkie moje profile, ponownie pobrać je z portalu administracyjnego i ponownie zaimportować do XCode. Następnie w Ustawieniach kompilacji / Podpisywaniu kodu wybierz odpowiedni profil dla wszystkich konfiguracji kompilacji.
Jay Imerman,
76
  1. Właściwości projektu i celu -> „Nie koduj podpisu” -> OK -> cmd + S (lub cmd + B);
  2. Właściwości projektu i celu -> „Twój profil rezerw” -> OK

  3. Wszystko znów działa!

użytkownik732414
źródło
4
To jedyne rozwiązanie, które działało dla mnie (przy użyciu XCode4). Tworzenie aplikacji z zaznaczoną opcją „Nie koduj” było dla mnie obowiązkowym krokiem.
Chazbot
Wydaje się, że jest to lepsze rozwiązanie niż rozwiązanie z ponad 200 opiniami, ponieważ Xcode może zmienić sposób zapisywania pliku projektu w przyszłości.
Danyal Aytekin
1
To jest poprawne rozwiązanie, które działało dla mnie w Xcode 4.2
Selvin
10

Zgadzam się z odpowiedzią Brada, że ​​możesz rozwiązać ten problem, ręcznie edytując swój cel / projekt, usuwając wszystkie takie linie:

PROVISIONING_PROFILE = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";

Jednak w Xcode 4.2 i nowszych istnieje znacznie łatwiejszy sposób na uzyskanie dostępu do tego tekstu oraz wybranie go i usunięcie. W Nawigatorze projektu po lewej stronie wybierz projekt (najwyższa linia Nawigatora projektu). Teraz wystarczy wybrać Widok> Edytor wersji> Pokaż edytor wersji. Spowoduje to wyświetlenie twojego projektu jako tekstu i możesz wyszukać POSTĘPOWANIE i usunąć kłopotliwą linię bezpośrednio w okienku edytora Xcode.

matowy
źródło
Następnie nie musisz zamykać i otwierać projektu. Lepsze podejście :)
wirusowy
6

Właśnie zobaczyłem wariację na ten temat: wszedłem do pliku project.pbxproj zgodnie z powyższymi uwagami Brada Smitha, z wyjątkiem tego przypadku wszystkie wiersze PROVISIONING_PROFILE wydawały się poprawne, bez wystąpienia „złego” ciągu profilu, którego XCode nie mógł nie znaleźć.

Jednak poprawka była taka sama: usunięcie WSZYSTKICH wierszy PROVISIONING_PROFILE w projekcie.pbxproj, mimo że teoretycznie wyglądały one „dobrze”, a następnie ponowne otwarcie projektu w XCode.

theank
źródło
4

Aby osiągnąć rozwiązanie Brada w całości w Terminalu, użyj tych poleceń

  1. cd [Xcode project parent]
  2. vi [Xcode project name].xcodeproj/project.pbxproj
  3. /[offending provisioning profile] [Enter]
  4. dd - usuń całą linię
  5. Naciskaj przycisk n, dopóki nie zostaną znalezione więcej
  6. Ctrl + x, aby zapisać i zamknąć
MechEngineer
źródło
3

W moim przypadku problem został rozwiązany poprzez otwarcie okna -> Organizator, wybranie mojego urządzenia i usunięcie starego profilu obsługi administracyjnej w panelu „Obsługa administracyjna” po prawej stronie. Stary był już oznaczony czerwonym symbolem „x”, ale iPhone wciąż go używał.

Oprócz tego profilu pojawiał się także nowy (o tej samej nazwie), a po ponownym uruchomieniu aplikacji miałem go płynnie działać.

stack-o-frankie
źródło
+1, czasami nie udało mi się zainstalować, ponieważ profil wygasł - nawet z tym samym identyfikatorem! - był na moim urządzeniu.
quantumpotato
Ten działał dla mnie, ale musiałem ponownie uruchomić XCode, aby go uruchomić.
Matt
3

Spędziłem około godzinę, robiąc to i przy pomocy rady Brada i kilku dodatkowych zmian wszystko działało.

Zrobiłem to przy użyciu: 10.7.3, Xcode 4.3.2, iOS 5.1 btw.

1) Kliknij prawym przyciskiem myszy myapp.xcodeproji wybierz zawartość opakowania

2) otwórz project.pbxprojza pomocą edytora tekstu (nie polecaj textedit, ponieważ może to popsuć formatowanie)

3) Przewiń do końca, aż znajdziesz /* Begin XCBuildConfiguration section */

4) Zauważ, że masz sekcje debugowania i wydania

5) Spójrz na sekcję dotyczącą wydania CODE_SIGN_IDENTITYi "CODE_SIGN_IDENTITY[sdk=iphoneos*]"powinna ona wyglądać mniej więcej tak:

CODE_SIGN_IDENTITY = "iPhone Distribution: MyCompany LLC";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: MyCompany LLC";

6) Spójrz PROVISIONING_PROFILEi "PROVISIONING_PROFILE[sdk=iphoneos*]"powinny wyglądać tak:

PROVISIONING_PROFILE = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";

To powinno pasować do twojego profilu administracyjnego w Xcode. Aby sprawdzić, czy pasują, otwórz Xcode> Okno> Organizator> Urządzenia> Profile obsługi administracyjnej> Kliknij profil prawym przyciskiem myszy> Pokaż w Finderze> Nazwa pliku .mobileprovision to identyfikator Twojego profilu.

7) Przewiń w dół project.pbxproji znajdź drugą instancję sekcji wydania. Druga instancja sekcji wydania powinna kończyć się komentarzem/* End XCBuildConfiguration section */

8) upewnij się, że druga sekcja pasuje do pierwszej sekcji CODE_SIGN_IDENTITY, "CODE_SIGN_IDENTITY[sdk=iphoneos*], i PROVISIONING_PROFILEwszystkie są wypełnione.

bobbypage
źródło
2

Jedną z propozycji przedstawię, ponieważ nikt jeszcze tego nie powiedział: PROSZĘ PROSZĘ ZROBIĆ kopię zapasową całego pliku .xcodeproj PRZED rozpoczęciem modyfikowania jego zawartości. Zepsucie pliku projektu i brak kopii zapasowej spowoduje bardzo nieprzyjemne doświadczenie.

Możliwość wycofania się z edycji może być darem niebios.

Richard Brown
źródło
Tak, dlatego bogowie SCM sprawowali kontrolę nad źródłem.
Br.Bill
1

Właśnie spotkałem ten problem w moim XCode4. Aby to naprawić, musisz umieścić wszystkie poprawne przepisy zarówno w konfiguracji debugowania, jak i wydania.

Próbowałem przesłać (przez zarchiwizowanie) moją aplikację. Zmieniam więc po prostu postanowienia dotyczące debugowania na „Nie podpisuj kodu”, a postanowienie o zwolnieniu do zapisu w App Store w mojej aplikacji.

Napraw to i pozwala mi normalnie archiwizować. Mam nadzieję, że to pomaga.

GeneCode
źródło
1

Wybierz wiersze podpisywania kodów, które są puste w Dowolnym zestawie SDK systemu iOS i wybierz odpowiedni certyfikat.

zapadalność
źródło
1

Rozwiązanie Brada Smitha działało dla mnie, ale musiałem również usunąć pole CODE_SIGN_IDENTITY, aby działało.

jean_jean
źródło
Odbywa się to ręcznie, modyfikując plik projektu xcode w edytorze tekstów, i często musiałem to robić, aby zacząć od nowa, gdy jestem w stanie zepsucia. Znajomość obu rzeczy, które można usunąć, jest często bardzo pomocna. Słuszna uwaga.
Warren P
0

Niestety takie podejście mi się nie udało. Ale oto poprawka, która zadziałała dla mnie (aby to zadziałało, potrzebujesz działającego pliku projektu na Subversion lub mniej więcej):

Cofnąłem się do działającej wersji mojego pliku projektu. Ponieważ nie można przywrócić za pomocą Xcode ( gdzie jest opcja „Cofnij” w Kontroli źródła Xcode 4? ) - Użyłem Tortoise, mojej maszyny Windows i tego samouczka ( http://tortoisesvn.net/docs/nightly/TortoiseSVN_pl /tsvn-howto-rollback.html ), aby przywrócić starszy plik projektu.

Ponieważ samouczek nie zadziałał, po prostu użyłem Tortoise, aby zapisać roboczą wersję mojego projektu na pamięci USB, aby przenieść go do mojego komputera Mac. Następnie zastąpiłem nowy zepsuty plik projektu starym działającym, wyczyściłem i zadziałało jak urok!

Chris Conway
źródło
0

Miałem problemy, ponieważ zaktualizowałem mój profil udostępniania AdHoc o nowe urządzenia do użytku w TestFlight. Zakłada się, że tak się dzieje, ponieważ xcode ma stare odniesienie do twojego profilu administracyjnego w ustawieniach kompilacji do podpisywania kodów dla projektu lub celów. Sposób, w jaki naprawiłem mój, to:

  1. Przejdź zarówno do docelowych ustawień kompilacji, jak i ustawień kompilacji projektu. Pod podpisywaniem kodu zmień wszystkie profile udostępniania na coś innego.
  2. Przejdź do profili urządzeń / administrowania w organizatorze, usuń szkodliwe profile, a następnie kliknij przycisk odświeżania w prawym dolnym rogu.
  3. Wróć do ustawień docelowych i kompilacji projektu i ustaw swoje profile udostępniania na odpowiednie (mam nadzieję) nowo odświeżone profile udostępniania.
George McKibbin
źródło
0

Przynajmniej w Xcode 5 rozwiązałem problem:

W obszarze Profil informacyjny wybierz niepoprawny profil informacyjny, a następnie wybierz prawidłowy profil informacyjny z menu rozwijanego.

wprowadź opis zdjęcia tutaj

RawMean
źródło
0

Możesz usunąć stare odniesienie pliku obsługi administracyjnej. Następnie po zaimportowaniu nowego profilu administracyjnego i wybraniu konstruktora Xcode.

annu
źródło