Ошибка кода: профиль подготовки не может быть найден после удаления профиля с истекшим сроком действия.

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

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

Что мне не хватает? Я просмотрел связанные вопросы и еще не видел этого сценария.


person quantumpotato    schedule 19.11.2009    source источник


Ответы (16)


Иногда ваш файл проекта Xcode портится, особенно если у вас есть старый проект и вы сначала создали его с помощью более старой версии Xcode / iPhone SDK.

Что вам нужно сделать, так это открыть файл проекта в текстовом редакторе, найти «длинную строку» из вашей ошибки и вручную стереть эту строку.

Фактически, вы должны просто стереть любую строку, указывающую на какие-либо профили обеспечения. Затем снова откройте проект в Xcode, перейдите в настройки и повторно выберите свой новый профиль. В большинстве случаев это устраняет подобные проблемы.

Линии, указывающие на профили обеспечения, будут выглядеть следующим образом:

PROVISIONING_PROFILE = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
person Brad The App Guy    schedule 19.11.2009
comment
Спасибо за ответ. У меня возникла ошибка. Не удалось открыть документ, пытаясь открыть файл .xcodeproj с помощью TextEdit (просто перезапущен, а Xcode не запущен). Любая идея? - person quantumpotato; 20.11.2009
comment
Файл .xcodeproj на самом деле является каталогом, таким как пакет приложения. Если вы щелкните его правой кнопкой мыши в поисковике, вы можете выбрать отображение содержимого пакета, и тогда вы увидите несколько файлов внутри (или в терминале просто вставьте в него cd). Фактический файл проекта находится там с расширением .pbxproj. Как только вы откроете его в текстовом редакторе, строки, которые вы ищете, должны начинаться с 'PROVISIONING_PROFILE = или' 'PROVISIONING_PROFILE [sdk = iphoneos *] ='. Удалите все это, и тогда все будет хорошо. - person Brad The App Guy; 20.11.2009
comment
Брэд Смит. Я попытался заархивировать свое приложение с новым профилем подготовки, а Xcode ищет старую подготовку. Я пробовал то, что ты сказал, и работаю - person ; 19.05.2011
comment
Я обнаружил, что в дополнение к вышесказанному мне пришлось удалить все свои профили, повторно загрузить их с портала подготовки и повторно импортировать в XCode. Затем в разделе «Параметры сборки» / «Подписание кода» выберите соответствующий профиль для всех конфигураций сборки. - person Jay Imerman; 09.12.2011
comment
Все еще ценный совет с XCode4 в 2012 году. Спасибо! - person Alexey Rusakov; 07.01.2012
comment
Получил эту проблему в Xcode 4.4 после обновления профилей Provisioning в Организаторе и создания сборки / архива Ad-Hoc Distribution. Вышеупомянутое решение исправило это. - person Wollan; 22.08.2012
comment
Возникла эта ошибка при обновлении xcode 4.6 до xcode 5. Редактирование файла устранило ошибку. - person kzia; 27.09.2013
comment
... ааааи еще ценный совет с Xcode6 в 2014 году! Огромное спасибо! - person Tom van Zummeren; 01.10.2014
comment
Я потратил утро на отслеживание этой проблемы (и ТОГДА наткнулся на этот точный совет !!) Как сказал Том, эта жалкая ошибка жива и работает в последней версии XCode 6.1 (ноябрь 2014 г.). Apple ДЕЙСТВИТЕЛЬНО не любит разработчиков, не так ли? - person Mike Gledhill; 26.11.2014
comment
Единственное, что у меня сработало: Настройки - ›Аккаунты -› Подробнее - ›Обновить. Это перезагрузило все профили обеспечения с портала разработчиков. Надеюсь, это кому-то поможет - person blackhawk4152; 26.11.2014
comment
По-прежнему сильна в 16-м. Это избавило меня от многих разочарований. - person LulzCow; 18.08.2016

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

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

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

Ори

person Ori    schedule 07.06.2010
comment
Спасибо! Попробую в следующий раз :) - person quantumpotato; 07.06.2010
comment
и сначала убедитесь, что выбрали правильную конфигурацию сборки :) - person Johnus; 16.11.2010
comment
Это не всегда работает. Иногда вам все равно нужно войти и изменить его вручную, как показано в первом ответе. - person SpaceTrucker; 30.09.2011
comment
Еще одно замечание, чтобы повторить SpaceTrucker: этот метод не всегда работает. Принятый ответ гарантирует, что Xcode перестанет искать этот фантомный профиль. - person Simone Manganelli; 08.11.2011
comment
Я обнаружил, что в дополнение к вышесказанному мне пришлось удалить все свои профили, повторно загрузить их с портала подготовки и повторно импортировать в XCode. Затем в разделе «Параметры сборки» / «Подписание кода» выберите соответствующий профиль для всех конфигураций сборки. - person Jay Imerman; 09.12.2011
comment
работал у меня, на самом деле дважды щелкнув проект, чтобы перейти в это окно (xcode 4.5.1) - person Marc Lindahl; 03.11.2012
comment
Ах! Спасибо, @WarrenP, я продолжал искать шаги этого решения в XCode 4.6 и был озадачен. К сожалению, в этом ответе нет лучших шагов или снимков экрана. - person Danny; 24.08.2013
comment
Я не могу найти панель "Группы и файлы", используя XCode 4.6.3. Это было бы отличным решением, если бы более подробно объяснили, какую версию использовать. - person Ska; 28.08.2013

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

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

person user732414    schedule 18.05.2011
comment
Это единственное решение, которое сработало для меня (с использованием XCode4). Создание приложения с выбранным параметром Don't Code Sign было для меня обязательным шагом. - person Chazbot; 19.07.2011
comment
Это кажется лучшим решением, чем решение, набравшее 200+ голосов, потому что Xcode может изменить способ записи файла проекта в будущем. - person Danyal Aytekin; 02.12.2011
comment
Это правильное решение, которое сработало для меня в Xcode 4.2. - person Selvin; 04.01.2012

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

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

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

person matt    schedule 23.11.2012
comment
После этого вам не нужно закрывать и открывать проект. Лучше подход :) - person viral; 18.04.2013

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

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

person theevank    schedule 04.05.2011

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

  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, чтобы сохранить и закрыть
person MechEngineer    schedule 17.04.2012

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

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

person stack-o-frankie    schedule 10.11.2010
comment
+1, иногда мне не удавалось установить из-за просроченного профиля - даже с тем же идентификатором! - был на моем устройстве. - person quantumpotato; 26.05.2011
comment
Этот сработал для меня, но мне также пришлось перезапустить XCode, чтобы он заработал. - person Matt; 29.07.2011

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

Я сделал это, используя следующее: 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> Щелкните правой кнопкой мыши профиль> Показать в Finder> Имя файла .mobileprovision - это идентификатор вашего профиля.

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

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

person bobbypage    schedule 14.04.2012

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

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

person Richard Brown    schedule 17.08.2011
comment
Да, именно поэтому боги SCM сделали систему контроля версий. - person Br.Bill; 05.06.2012

Выберите пустые строки в кодовой подписи в разделе «Любой SDK для iOS» и выберите правильный сертификат.

person sunkencity    schedule 18.11.2011

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

person jean_jean    schedule 19.11.2012
comment
Это делается вручную путем изменения файла проекта xcode в текстовом редакторе, и мне часто приходилось делать это, чтобы снова начать работу, когда я нахожусь в неисправном состоянии. Часто очень полезно знать обе вещи, которые можно удалить. Хорошая точка зрения. - person Warren P; 26.08.2013

Я только что столкнулся с этой проблемой в моем Xcode 4. Чтобы исправить это, вам нужно поместить все правильные положения в конфигурацию Debug и Release.

Я пытался отправить (архивируя) свое приложение. Поэтому я просто меняю положения отладки на Не подписывать код, а положение о выпуске - на положение магазина приложений моего приложения.

Это исправляет и позволяет мне выполнять архивирование в обычном режиме. Надеюсь, это поможет.

person GeneCode    schedule 19.08.2011

К сожалению, у меня этот подход не сработал. Но вот исправление, которое сработало для меня (чтобы заставить это работать, вам нужен рабочий файл проекта в Subversion или около того):

Я вернулся к рабочей версии своего файла проекта. Поскольку невозможно вернуться к Xcode (Где есть ли опция «Возврат» в системе управления версиями Xcode 4?) - Я использовал Tortoise, свою машину с Windows и этот учебник (http://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-howto-rollback.html), чтобы вернуться к более раннему файлу проекта.

Поскольку Учебное пособие не сработало для меня, я просто использовал Tortoise, чтобы сохранить рабочую версию моего файла проекта на USB-накопитель, чтобы перенести его на свой Mac. После этого я заменил новый сломанный файл проекта на старый рабочий, почистил, и он заработал как шарм!

person Chris Conway    schedule 07.02.2013

По крайней мере, в Xcode 5 это то, что решило проблему для меня:

В разделе «Профиль обеспечения» выберите проблемный профиль обеспечения, а затем выберите действительный профиль обеспечения в раскрывающемся меню.

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

person RawMean    schedule 26.09.2013

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

person annu    schedule 09.03.2015

У меня возникли проблемы, потому что я обновил свой профиль подготовки AdHoc, добавив несколько новых устройств для использования в TestFlight. Предположительно это происходит потому, что Xcode имеет старую ссылку на ваш профиль подготовки либо в параметрах сборки с кодовой подписью для проекта, либо в целях. Я исправил свой так:

  1. Перейдите как к настройкам целевой сборки, так и к настройкам сборки проекта. Под подписью кода измените все профили подготовки на что-то другое.
  2. Перейдите к устройствам / профилям обеспечения в Организаторе, удалите проблемные профили, затем нажмите кнопку обновления в правом нижнем углу.
  3. Вернитесь к целевому объекту и настройкам сборки проекта и установите свои профили обеспечения на соответствующие (надеюсь) недавно обновленные профили обеспечения.
person George McKibbin    schedule 25.06.2013