Ошибка Codesign: профиль обеспечения не может быть найден после удаления просроченного профиля - PullRequest
498 голосов
/ 19 ноября 2009

Пытался восстановить приложение, которое работало только вчера. Получил сообщение об истечении срока действия профиля, поэтому я удалил его из iPod и из iTunes. Когда я выбрал новый профиль (один с * в идентификаторе), я теперь получаю ошибку:

Ошибка кода: не удается найти профиль обеспечения (длинная строка).

Чего мне не хватает? Я просмотрел похожие вопросы и уже не видел этот сценарий.

Ответы [ 16 ]

854 голосов
/ 19 ноября 2009

Иногда ваш файл проекта xcode портится, особенно если у вас есть старый проект и вы сначала создали его с более старой версией xcode / iphone sdk. Что вам нужно сделать, это открыть файл проекта в текстовом редакторе, найти «длинную строку» из вашей ошибки и вручную стереть эту строку. На самом деле, вы должны просто удалить любую строку, которая указывает на любые профили обеспечения. Затем заново откройте проект в xcode, зайдите в настройки и заново выберите свой новый профиль. Это устраняет подобные проблемы в большинстве случаев. Строки, которые указывают на профили обеспечения, будут выглядеть следующим образом:

PROVISIONING_PROFILE = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
129 голосов
/ 07 июня 2010

Вот более простое решение, которое сработало для меня и не требует ручного редактирования файла проекта:

В XCode на панели «Группы и файлы» разверните «Цели» и дважды щелкните по цели вашего приложения. Это вызывает информационную панель для цели. В разделе «Сборка» проверьте раздел «Подписывание кода» на наличие старых профилей и замените их на правильные.

Обратите внимание, что это отличается от двойного щелчка по значку вашего проекта и изменения профиля оттуда. Довольно удивительно:)

Ori

76 голосов
/ 19 мая 2011
  1. Свойства проекта и целей -> «Не кодировать» -> ОК -> cmd + S (или cmd + B);
  2. Свойства проекта и целей -> «Ваш профиль обеспечения» -> ОК

  3. Все снова работает!

10 голосов
/ 23 ноября 2012

Я согласен с ответом Брэда, что вы можете решить эту проблему, отредактировав вашу цель / проект вручную, удалив любые строки, подобные этой:

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

Однако, в Xcode 4.2 и позже, есть намного более простой способ получить доступ к этому тексту и выбрать и удалить его. В Навигаторе проектов слева выберите свой проект (самая верхняя строка Навигатора проектов). Теперь просто выберите «Просмотр»> «Редактор версий»> «Показать редактор версий». Это отображает ваш проект в виде текста, и вы можете искать PROVISIONING и удалять проблемную строку прямо на панели редактора Xcode.

6 голосов
/ 04 мая 2011

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

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

4 голосов
/ 17 апреля 2012

Чтобы полностью реализовать решение Брэда в Терминале, используйте эти команды

  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 голосов
/ 14 апреля 2012

Просто потратил час или около того, делая это, и с помощью совета Брэда и нескольких дополнительных изменений все это заработало.

Я сделал это, используя следующее: 10.7.3, Xcode 4.3.2, iOS 5.1, кстати.

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> Window> Organizer> Devices> Provisioning Profiles> Щелкните правой кнопкой мыши по профилю> Reveal in Finder> Имя файла .mobileprovision - это идентификатор вашего профиля.

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

8) убедитесь, что второй раздел совпадает с первым, чтобы заполнить CODE_SIGN_IDENTITY, "CODE_SIGN_IDENTITY[sdk=iphoneos*] и PROVISIONING_PROFILE.

3 голосов
/ 10 ноября 2010

В моем случае проблему удалось решить, открыв Окно -> Органайзер, выбрав мое устройство и удалив старый профиль Provisioning Profile под панелью «Provisioning» справа. Старый уже был отмечен красным символом «х», но iPhone все еще использовал его.

Помимо этого профиля, также появлялся новый (с тем же именем), и после простого перезапуска приложения он работал без сбоев.

2 голосов
/ 17 августа 2011

Я сделаю одно предложение, поскольку никто еще не сказал этого: ПОЖАЛУЙСТА, ПОЖАЛУЙСТА, ПОЖАЛУЙСТА, сделайте резервную копию всего вашего файла .xcodeproj ДО того, как вы начнете изменять его содержимое.Завинчивание файла проекта и отсутствие резервной копии приведет к очень и очень неприятному опыту.

Возможность отказаться от редактирования может быть находкой.

1 голос
/ 19 ноября 2012

Решение Брэда Смита работало для меня, но мне также пришлось удалить поле CODE_SIGN_IDENTITY, чтобы оно заработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...