Подтвердить что ты не робот

Xcode не узнает мой новый профиль подготовки

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

Проблема заключается в том, что, хотя Организатор может видеть новый профиль и устанавливать его как обычно, среда IDE путается между старой и новой. Каждый раз, когда я пытаюсь создать приложение, он прерывается немедленно. Консоль ошибок сообщает мне, что Xcode не может найти старый профиль, потому что указанный GUID принадлежит старой. Это странно; Я думал, что Xcode уже знал бы о новом профиле.

Я попытался удалить новый профиль с моих устройств и моего Mac, а затем переустановить профиль. Не работает, Xcode все еще пытается найти старый. Я также попытался выбрать другой профиль, чтобы Xcode забыл старый, а затем выбрал новый. Я даже пробовал вручную вводить GUID нового в выборе Другие. Тем не менее Xcode по-прежнему настаивает на поиске старого профиля, который уже сейчас ушел с моего Mac.

Как убедить Xcode, что я создал новый профиль подготовки для своего приложения для его использования?

4b9b3361

Ответ 1

tl; dr:, мне просто пришлось вручную отредактировать файл проекта, чтобы сообщить Xcode нового профиля. Теперь я не знаю, почему мне пришлось вручную обновлять файл проекта. Возможно, я сделал что-то не так во время импорта нового профиля в Xcode, поэтому он не понял, что появился мой новый профиль. Или файловая система забилась на полпути, и Xcode не смог обновить себя. О, хорошо.

Теперь для технической части fun:

ВАЖНО: Как и все, что связано с изменением файлов, вы не должны изменять: обязательно создайте резервную копию пакета .xcodeproj и/или весь проект Xcode или сделайте убедитесь, что ваш проект Xcode поддерживается в правильном управлении версиями. Вы не хотите испортить и заставить Xcode прекратить создание своего проекта на вашем устройстве, чтобы ничего не отпало.

Я заглянул в содержимое моего приложения .xcodeproj bundle (Xcode в данный момент не работает). Чтобы просмотреть их, откройте папку проекта в Finder, затем щелкните Control-click в файле .xcodeproj и выберите Показать содержимое пакета:

Breeze.xcodeproj/
  Daniel.mode1v3
  Daniel.pbxuser
  project.pbxproj

Затем открыли project.pbxproj в текстовом редакторе (это текстовое, а не бинарное) и просмотрели информацию о конфигурации сборки.

Здесь есть раздел с меткой /* Begin XCBuildConfiguration section */ (который вы можете найти, используя функцию поиска в редакторе). Это список записей, каждый из которых представляет конфигурацию подписи кода для данного профиля в заданной конфигурации сборки.

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

1D6058940D05DD3E006BFB54 /* Debug */ = {
    isa = XCBuildConfiguration;
    buildSettings = {
        ALWAYS_SEARCH_USER_PATHS = NO;
        "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: Daniel Tan (XXXXXXXXXX)";
        COPY_PHASE_STRIP = NO;
        GCC_DYNAMIC_NO_PIC = NO;
        GCC_OPTIMIZATION_LEVEL = 0;
        GCC_PRECOMPILE_PREFIX_HEADER = YES;
        GCC_PREFIX_HEADER = Breeze_Prefix.pch;
        GCC_VERSION = com.apple.compilers.llvmgcc42;
        INFOPLIST_FILE = "Breeze-Info.plist";
        IPHONEOS_DEPLOYMENT_TARGET = 4.0;
        PRODUCT_NAME = "Breeze";
        "PROVISIONING_PROFILE[sdk=iphoneos*]" = "36F99F3E-805F-47A7-95D4-FF8324711CBE";
        SDKROOT = iphoneos;
    };
    name = Debug;
};

Следует отметить эту строку:

"PROVISIONING_PROFILE[sdk=iphoneos*]" = "36F99F3E-805F-47A7-95D4-FF8324711CBE";

Указание GUID с помощью ошибки построения; идентификатор моего старого истекшего профиля подготовки.

Все, что мне нужно было сделать, это заменить его GUID нового профиля:

"PROVISIONING_PROFILE[sdk=iphoneos*]" = "E6E6369E-FD58-4886-9C3A-72C9DAE36501";

Я снова открываю проект в Xcode, и теперь мое приложение успешно запускается и устанавливается на моих устройствах, используя новый профиль подготовки.

Ответ 2

Вот как я это сделал в Xcode 4:

  • Выберите "Не вводить код из проекта" > "Настройки сборки" > "Подписание кода"
  • Очистить сборку
  • Постройте его снова - должна отображаться ошибка, например, "этот материал требует подписания"
  • Выберите новый профиль из подписи кода
  • Перестроить

Ответ 3

Я смог исправить эту ошибку, изменив ее на "Do not Code Sign" в Identity Signing Signing. Постройте, и вы получите сообщение об ошибке: "Подпись кода требуется для типа продукта... бла...". Затем вернитесь назад и выберите правильный профиль. Строй и все хорошо. Это случилось со мной, потому что мой сертификат истек, и я обновил его. В дополнение к вышесказанному я также должен был удалить старый сертификат из моей брелка и Организатора.

Ответ 4

  • Закрыть de xcode
  • edith с texmate, youtproject.xcodeproj
  • Найдите эту строку "PROVISIONING_PROFILE[sdk=iphoneos*]" = "E8DEEBA3-FE0A-419F-9F7E-258572D55807";
  • Erase
  • Перезапустить сборку и архивирование xcode для предприятия

Ответ 5

Чтобы добавить к решению выше, вы можете использовать прекрасный xcodeproj драгоценный камень, чтобы помочь с такими вещами. Обратите внимание: он преобразует ваш стиль OpenStep key = value; в XML. Примечание. Я обнаружил, что Xcode меняет его, если позже вы измените файл проекта в Xcode. Любой стиль файла строит отлично либо в Xcode, либо из командной строки. Для примера того, как я его использую

project = Xcodeproj::Project.new('Foo.xcodeproj')
csi_key = 'CODE_SIGNING_IDEDNTITY'
project.targets.each do |target|
  target.build_configurations.each do |conf|
    conf.build_settings[csi_key] = 'iPhone Developer: Cool Dood (XYZ123)' unless conf.build_settings[csi_key] == nil
  end
end

Вот суть того, как я его использую: https://gist.github.com/82times/5594887

Ответ 6

Мое решение этой проблемы:

  • Загрузите новый профиль подготовки
  • Дважды щелкните профиль обеспечения, чтобы установить его
  • Перейдите в следующий каталог на вашем mac: /Users/<your.username>/Library/MobileDevice/Provisioning Profiles
  • Найдите старый профиль подготовки, который вам больше не нужен (но он продолжает отображаться в Xcode). Это может пригодиться для этого шага: https://github.com/chockenberry/Provisioning
  • Удалить его
  • Полностью выйти из Xcode
  • Reopen Xcode
  • Теперь вы можете выбрать свой новый профиль подготовки

Ответ 7

В моем случае с XCode 5, когда мой сертификат разработчика истек, я столкнулся с этой проблемой. Я вручную загрузил новый сертификат и новый профиль подготовки. Я добавил сертификат в цепочку ключей и профиль подготовки к устройствам в организаторе.

Однако XCode продолжал жаловаться, что я не могу подписать приложение. Я решил, что в настройках XCode 5 он все еще отображает старый профиль обеспечения, и он не обновляется до нового, несмотря на многочисленные перезагрузки, которые я там сделал.

В конце концов, я использовал утилиту настройки iPhone, чтобы удалить старый профиль подготовки и добавить недавно загруженный профиль подготовки. После подписания кода работала должным образом.

Ответ 8

Я подумал, что двойной щелчок по загруженному профилю подготовки поместит его в xCode Organizer Archive, но это просто не сработает для меня. Следующие шаги, наконец, сработали для меня.

  • Открыть xCode
  • Перейти к Product → Destination → iOS Device
  • Перейти к продукту → Архив

Ответ 9

Большинство ответов не работало для меня, поскольку они, похоже, предназначены для более старых версий.

Для Xcode 8.3.2:

  • Xcode- > Настройки- > Учетные записи
  • Выберите Apple ID
  • Дважды щелкните команду
  • В раскрывающемся списке "+" в левом нижнем углу "Создать сертификат"
  • Выберите iOS Development
  • Нажмите "Готово"

После этого я смог сказать, что Xcode использовал последний профиль, щелкнув значок "i" рядом с "Управляемый профиль Xcode" в разделе "Цели" → "Общие" > "Подписание" и подтвердив, что дата "Создана" отражает новый.