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

StackOverflow https://stackoverflow.com/questions/1760518

Вопрос

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

Ori

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

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

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

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

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

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

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

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

  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 для сохранения и закрытия

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

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

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

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

1) Щелкните правой кнопкой мыши на вашем myapp.xcodeproj и выберите содержимое упаковки

2) открыть project.pbxproj с помощью текстового редактора (не рекомендую textedit, так как это может испортить форматирование)

3) Прокрутите до конца вниз, пока не найдете /* Begin XCBuildConfiguration section */

4) Обратите внимание, что у вас есть разделы debug и release

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 и найдите второй экземпляр раздела release.Второй экземпляр раздела release должен заканчиваться комментарием со словами /* End XCBuildConfiguration section */

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

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

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

Я только что столкнулся с этой проблемой в моем XCode4.Чтобы исправить это, вам нужно поместить все правильные положения как в Debug, так и в Release config.

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

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

Выберите пустые строки в codesigning в любом iOS SDK и выберите нужный сертификат.

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

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

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

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

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

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

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

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

enter image description here

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top