Ошибка кодового оформления:Профиль подготовки не может быть найден после удаления профиля с истекшим сроком действия
-
21-09-2019 - |
Вопрос
Попытался перестроить приложение, которое работало только вчера.Получил сообщение о том, что срок действия профиля истек, поэтому я удалил его с 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
- Свойства проекта и целевых объектов -> "Не подписывать код" -> OK -> cmd+ S (или cmd + B);
Свойства проекта и целевых объектов -> "Ваш профиль предоставления"-> OK
Все снова работает!
Я согласен с ответом Брэда, что вы можете исправить эту проблему, отредактировав свою цель / проект вручную, удалив любые строки, подобные этой:
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.
Чтобы полностью реализовать решение Брэда в терминале, используйте эти команды
cd [Xcode project parent]
vi [Xcode project name].xcodeproj/project.pbxproj
/[offending provisioning profile] [Enter]
dd
- удалить всю строку целиком- Нажимайте n до тех пор, пока больше ничего не будет найдено
- 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 для проекта, либо в целевых объектах.Способ, которым я исправил свой, заключался в том, чтобы:
- Перейдите как к настройкам целевой сборки, так и к настройкам сборки проекта, в разделе подпись кода измените все профили подготовки на что-то другое.
- Перейдите в раздел устройства / профили подготовки в органайзере, удалите профили-нарушители, затем нажмите кнопку обновить в правом нижнем углу.
- Вернитесь к настройкам сборки цели и проекта и установите для своих профилей подготовки соответствующие (надеюсь) недавно обновленные профили подготовки.
По крайней мере, в Xcode 5 это то, что решило проблему для меня:
В разделе профиль подготовки выберите недопустимый профиль подготовки, а затем выберите допустимый профиль подготовки в выпадающем меню.
Вы могли бы удалить старую ссылку на файл подготовки.Затем после импорта нового профиля подготовки и выбора Xcode builder.