Помилка кодування: Неможливо знайти профіль надання після видалення простроченого профілю


500

Спробував відновити додаток, який працював лише вчора. Отримало повідомлення про те, що термін дії закінчився, тому я його видалив із iPod та з iTunes. Коли я вибрав новий профіль (той, який має * в ідентифікаторі), я отримую помилку:

Помилка підпису коду: неможливо знайти профіль надання (довгий рядок).

Що я пропускаю? Я переглянув відповідні питання і цього сценарію вже не бачив.

Відповіді:


856

Іноді ваш файл проекту xcode псується, особливо якщо у вас старий проект і вперше його створено зі старішою версією xcode / iphone sdk. Що вам потрібно зробити, це відкрити файл проекту в текстовому редакторі, шукати "довгу рядок" з вашої помилки та видаляти цей рядок вручну. Насправді, вам слід просто продовжити та стерти будь-який рядок, який вказує на будь-які профілі резервування. Потім знову відкрийте проект у xcode, перейдіть до налаштувань та переберіть новий профіль. Це очищує такі питання, як більшість часу. Рядки, які вказують на профілі резервування, будуть виглядати приблизно так:

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

210
Файл .xcodeproj насправді є каталогом, як набір програм, Якщо ви клацніть правою кнопкою миші в пошуку, ви можете вибрати вміст пакета, і тоді ви побачите кілька файлів всередині (або в терміналі, просто вкладені в нього). Фактичний файл проекту - це файл із розширенням .pbxproj. Як тільки ви відкриєте його за допомогою текстового редактора, шукані рядки повинні починатися з «PROVISIONING_PROFILE = або» «PROVISIONING_PROFILE [sdk = iphoneos *]» = '. Видаліть усе це, і тоді ви повинні бути хорошими.
Brad The App Гай

2
Я виявив, що, окрім вищезазначеного, мені довелося видалити всі мої профілі, повторно завантажити їх з порталу надання та повторно імпортувати їх у XCode. Потім у розділі Налаштування збірки / підпис коду виберіть відповідний профіль для всіх конфігурацій збірки.
Джей Імерман

11
Все ще цінна порада з XCode4 у 2012 році. Дякую!
Олексій Русаков

6
... аааа та ще цінна порада з Xcode6 у 2014 році! Дуже дякую!
Том ван Зуммерен

4
Єдине, що працювало для мене: Налаштування -> Облікові записи -> Переглянути деталі -> Оновити. Це перезавантажило всі профілі резервування з порталу розробників. Сподіваюсь, це комусь допоможе
blackhawk4152

129

Ось більш просте рішення, яке працювало для мене і яке не потребує ручного редагування файлу проекту:

У XCode на панелі "Групи та файли" розгорніть "Цілі" та двічі клацніть ціль програми. Це відкриває панель інформації для цілі. У розділі «Збірка» перевірте розділ «підпис коду» на наявність старих профілів та замініть правильний.

Зауважте, що це відрізняється від подвійного клацання на піктограмі вашого проекту та зміни профілю звідти. Досить дивовижно :)

Орі


1
Дякую! Я спробую це наступного разу, коли це станеться :)
Quantumpotato

6
і переконайтесь, що спочатку виберіть правильну конфігурацію збірки :)
Іоанн

1
Це не завжди працює. Іноді вам все ж доводиться зайти і змінити його вручну, як це показано в першій відповіді.
SpaceTrucker

Ще одна примітка до відлуння SpaceTrucker: цей метод не завжди працює. Прийнята відповідь гарантує, що Xcode перестане шукати цей фантомний профіль.
Сімоне Манганеллі

Я виявив, що, окрім вищезазначеного, мені довелося видалити всі мої профілі, повторно завантажити їх з порталу надання та повторно імпортувати їх у XCode. Потім у розділі Налаштування збірки / підпис коду виберіть відповідний профіль для всіх конфігурацій збірки.
Джей Імерман

76
  1. Властивості проекту та цілей -> "Не підписувати код" -> ОК -> cmd + S (або cmd + B);
  2. Властивості проекту та цілей -> "Ваш профіль надання" -> ОК

  3. Все знову працює!


4
Це єдине рішення, яке працювало для мене (Використання XCode4). Створення програми з вибраним "Не кодувати знак" було для мене обов'язковим кроком.
Chazbot

Це здається кращим рішенням, ніж рішення з 200+ оновленнями, оскільки Xcode може змінити спосіб написання файлу проекту в майбутньому.
Данял Айтеккін

1
Це правильне забруднення, яке працювало для мене в Xcode 4.2
Селвін

10

Я погоджуюся з відповіддю Бреда, що ви можете вирішити цю проблему, відредагувавши свою ціль / проект вручну, видаливши будь-які рядки на зразок цієї:

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

Однак у Xcode 4.2 та пізніших версіях є набагато простіший спосіб отримати доступ до цього тексту та вибрати та видалити його. У Навігаторі проектів зліва виберіть проект (найвищий рядок Навігатора проектів). Тепер просто виберіть Перегляд> Редактор версій> Показати редактор версій. Це відображає ваш проект у вигляді тексту, і ви можете шукати ДОПОМОГА та видаляти проблемну рядок прямо там, на панелі редактора Xcode.


Після цього вам не доведеться закривати та відкривати проект. Кращий підхід :)
вірусний

6

Щойно в цьому питанні виникла зміна: я зайшов у файл project.pbxproj відповідно до вищезазначених приміток Бреда Сміта, за винятком випадків, коли всі рядки PROVISIONING_PROFILE здавалися правильними, без появи «поганого» рядка профілю, який XCode не міг не знайду.

Однак виправлення було таким самим: видалення ВСІХ рядків PROVISIONING_PROFILE в project.pbxproj, хоча вони теоретично виглядали «добре», а потім знову відкрили проект у XCode.


4

Щоб досягти рішення Бреда повністю в Терміналі, використовуйте ці команди

  1. cd [Xcode project parent]
  2. vi [Xcode project name].xcodeproj/project.pbxproj
  3. /[offending provisioning profile] [Enter]
  4. dd - видалити весь рядок
  5. Натискайте n, поки більше не знайдено
  6. Ctrl + x для збереження та закриття

3

У моєму випадку проблему було вирішено, відкривши вікно -> Органайзер, вибравши мій пристрій та видаливши старий профіль забезпечення на панелі "Надання" праворуч. Старий вже був позначений червоним символом "х", але iPhone все ще використовував його.

Окрім цього профілю, з'явився і новий (з такою ж назвою), і після простого перезапуску програми я працював безперебійно.


+1, іноді мені не вдалося встановити, оскільки прострочений профіль - навіть не з тим самим ідентифікатором! - був на моєму пристрої.
квантовапота

Цей працював для мене, але мені також довелося перезапустити XCode, щоб він працював.
Метт

3

Просто витративши годину на це, і за допомогою порад Бреда та кількох додаткових змін все це спрацювало.

Я робив це за допомогою наступного: 10.7.3, Xcode 4.3.2, iOS 5.1 btw.

1) Клацніть правою кнопкою миші на вашому myapp.xcodeprojі виберіть вміст пакета

2) відкрити project.pbxprojтекстовим редактором (не рекомендую textedit, оскільки це може накрутити форматування)

3) Прокрутіть всю дорогу донизу, поки не знайдете /* Begin XCBuildConfiguration section */

4) Зауважте, що у вас є розділи налагодження та випуску

5) У розділі випуску подивіться CODE_SIGN_IDENTITY& "CODE_SIGN_IDENTITY[sdk=iphoneos*]"він повинен виглядати приблизно так:

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

6) Погляньте, PROVISIONING_PROFILEі "PROVISIONING_PROFILE[sdk=iphoneos*]"вони повинні виглядати так:

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

Це має відповідати вашому профілю надання в Xcode. Щоб побачити, чи відповідають вони відкритим Xcode> Вікно> Органайзер> Пристрої> Надання профілів> Клацніть правою кнопкою миші на профіль> Розкрити в Finder> Ім'я файлу .mobileprovision - це ваш профіль.

7) Прокрутіть вниз project.pbxprojі знайдіть другий екземпляр розділу випуску. Другий примірник розділу випуску повинен закінчуватися коментарем/* End XCBuildConfiguration section */

8) переконайтесь, що другий розділ відповідає першому розділу таким чином CODE_SIGN_IDENTITY, "CODE_SIGN_IDENTITY[sdk=iphoneos*], і PROVISIONING_PROFILEвсі вони заповнені.


2

Одне із пропозицій, які я ще не зробив, оскільки ніхто ще не сказав цього: БУДЬ ЛАСКА, БУДЬ ласка, створіть резервну копію всього вашого .xcodeproj-файлу, перш ніж ви почнете змінювати його вміст. Перекручування файлу проекту та відсутність резервної копії призведе до дуже неприємного досвіду.

Можливість відмовитися від редагування може бути знахідкою.


Так, саме тому боги СКМ здійснили контроль над джерелами.
Br.Bill

1

Я щойно стикався з цією проблемою у своєму XCode4. Щоб виправити це, потрібно помістити всі правильні положення в конфігурацію налагодження та випуску.

Я намагався подати (архівуючи) свою програму. Тому я просто змінюю положення про налагодження на "Не підписуйте код", а положення "Випуск" - на положення про магазин мого додатка.

Це виправить це і дозволяє мені нормально архівувати. Сподіваюся, що це допомагає.


1

Виберіть рядки в кодуваннях, які є порожніми під будь-яким iOS SDK та виберіть потрібний сертифікат.


1

Рішення Бреда Сміта працювало для мене, але мені також довелося видалити поле CODE_SIGN_IDENTITY, щоб воно працювало.


Це робиться вручну, змінюючи файл проекту xcode в текстовому редакторі, і мені часто доводилося це робити, щоб знову переходити, коли я потрапляю у розбитий стан. Знання обох речей, які можна усунути, часто дуже корисне. Гарна думка.
Warren P

0

На жаль, такий підхід для мене не вийшов. Але ось виправлення, яке працювало для мене (для того, щоб це працювало, потрібен робочий файл проекту на Subversion чи так далі):

Я повернувся до робочої версії мого файлу проекту. Оскільки повернути за допомогою Xcode неможливо ( Де параметр "Повернути" у контролі джерела Xcode 4? ) - Я використовував черепаху, свою машину Windows та цей підручник ( http://tortoisesvn.net/docs/nightly/TortoiseSVN_en /tsvn-howto-rollback.html ), щоб повернутися до старого файлу проекту.

Оскільки підручник не вийшов для мене, я просто використав Tortoise, щоб зберегти робочу версію мого файлу проекту на USB-паличці, щоб передати його моєму Mac. Після цього я замінив новий розбитий файл проекту на старий робочий, очистив і він працював як шарм!


0

У мене виникли проблеми, оскільки я оновив профіль надання AdHoc деякими новими пристроями для використання в TestFlight. Імовірно, це відбувається тому, що xcode має старі посилання на ваш профіль резервування або в налаштуваннях побудови кодування проекту, або в цілях. Те, як я виправив своє, було:

  1. Перейдіть як до налаштувань цільової збірки, так і до налаштувань збірки проектів. Під підписанням коду змініть усі профілі забезпечення на щось інше.
  2. Перейдіть на пристрої / профілі забезпечення в організаторі, видаліть неприйнятні профілі, а потім натисніть кнопку оновлення в нижньому правому куті.
  3. Поверніться до налаштувань цілі та створення проекту та встановіть свої профілі резервування на відповідні (сподіваємось) щойно оновлені профілі забезпечення.

0

Принаймні, у Xcode 5, це те, що вирішило проблему для мене:

У розділі "Надання профілю" виберіть профіль резервування, який порушує праворуч, а потім виберіть дійсний профіль резервування у спадному меню.

введіть тут опис зображення


0

Ви не можете видалити стару посилання на файл надання. Потім після імпорту нового профілю надання та вибору конструктора Xcode.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.