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

512

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

Code Sign Error: Provisioning Profile (long string) can't be found.

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

Теги:
xcode
codesign

16 ответов

888
Лучший ответ

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

PROVISIONING_PROFILE = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
  • 0
    Спасибо за ответ. Я получил сообщение об ошибке «Не удалось открыть документ» при попытке открыть файл .xcodeproj с помощью TextEdit (просто перезапущен, а Xcode не запущен). Любая идея?
  • 210
    Файл .xcodeproj на самом деле является каталогом, похожим на пакет приложений. Если вы щелкнете по нему правой кнопкой мыши в Finder, вы можете выбрать Показать содержимое пакета, а затем вы увидите несколько файлов внутри (или в терминале просто перейдите в него). Фактический файл проекта - это файл с расширением .pbxproj. После того, как вы откроете его в текстовом редакторе, искомые строки должны начинаться с 'PROVISIONING_PROFILE = или' '' PROVISIONING_PROFILE [sdk = iphoneos *] "= '. Удалить все из них, и тогда вы должны быть хорошими.
Показать ещё 11 комментариев
123

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

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

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

Оп

  • 1
    Спасибо! Я попробую это в следующий раз, когда это произойдет :)
  • 6
    и убедитесь, что сначала выбрали правильную конфигурацию сборки :)
Показать ещё 8 комментариев
76
  • Project & Targets Properties → "Do not Code Sign" → OK → cmd + S (или cmd + B);
  • Project & Targets Properties → "Профиль вашего профиля" → OK

  • Все работает снова!

  • 4
    Это единственное решение, которое сработало для меня (с использованием XCode4). Создание приложения с выбранным параметром «Не кодировать» было для меня обязательным шагом.
  • 0
    Это кажется лучшим решением, чем решение с более чем 200 голосами, потому что Xcode может изменить способ записи файла своего проекта в будущем.
Показать ещё 1 комментарий
10

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

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

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

  • 0
    После этого вам не нужно закрывать и открывать проект. Лучше подходить :)
6

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

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

4

Чтобы достичь решения Brad целиком в терминале, используйте эти команды

  • cd [Xcode project parent]
  • vi [Xcode project name].xcodeproj/project.pbxproj
  • /[offending provisioning profile] [Enter]
  • dd - удалить всю строку
  • Нажмите n, пока не будет найдено больше.
  • Ctrl + x для сохранения и закрытия
  • 0
    Это было полезно
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) В разделе release взгляните на 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 > Окно > Органайзеp > Устройствa > Профили Provisioning Profiles > Щелкните правой кнопкой мыши на профиле > Reveal in Finder > Имя файла .mobileprovision - это ваш профиль.

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

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

3

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

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

  • 0
    +1, иногда мне не удается установить, потому что просроченный профиль - даже с тем же идентификатором! - был на моем устройстве.
  • 0
    Этот работал для меня, но мне также пришлось перезапустить XCode, чтобы он заработал.
2

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

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

  • 2
    git checkout / reset ftw
  • 0
    Да, именно поэтому боги SCM установили контроль над источниками.
1

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

  • 0
    Это делается вручную путем изменения файла проекта xcode в текстовом редакторе, и мне часто приходилось делать это, чтобы начать работу снова, когда я нахожусь в неисправном состоянии. Знание обеих вещей, которые могут быть удалены, часто очень полезно. Хорошая точка зрения.
1

Выберите строки в кодировке, которые пусты в разделе Any IOS SDK, и выберите правильный сертификат.

  • 0
    я не могу поверить, что это сработало!, спасибо.
1

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

Я пытался отправить (путем архивирования) мое приложение. Поэтому я просто изменяю положения "Отладка" на "Do not Code Sign" и положение Release в моем приложении Appstore.

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

0

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

0

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

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

Изображение 5322

0

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

  • Перейдите к настройкам целевой сборки и настройкам сборки проекта. Под подпиской кода измените все профили подготовки на что-то еще.
  • Перейдите к профилям устройств/профилей в организаторе, удалите оскорбительные профили, затем нажмите кнопку обновления в правом нижнем углу.
  • Вернитесь к настройкам сборки целевого объекта и проекта и настройте профили подготовки к соответствующим (надеюсь) вновь обновленным профилям подготовки.
0

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню