Xcode не распознает мой новый профиль обеспечения

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

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

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

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

9 ответов

Решение

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

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

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

Я заглянул в содержимое моего приложения .xcodeproj связка (XCode не работает в это время). Чтобы просмотреть их, откройте папку вашего проекта в Finder, затем нажмите Control-щелкните на вашем .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, и теперь мое приложение успешно собирается и устанавливается на мои устройства, используя новый профиль обеспечения.

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

  1. Выберите "Не подписывать код" в "Проект"> "Настройки сборки"> "Подписание кода"
  2. Очистить сборку
  3. Создайте его снова - должно появиться сообщение об ошибке типа "этот материал требует подписи"
  4. Выберите новый профиль из подписи кода
  5. перестраивать

Мне удалось исправить эту ошибку, изменив ее на "Не подписывать код" в идентификаторе подписи кода. Постройте, и вы получите сообщение об ошибке "Требуется подпись кода для типа продукта... бла...". Затем вернитесь и выберите правильный профиль. Сборка и все хорошо. Это случилось со мной, потому что срок действия моего сертификата истек, и я продлил его. В дополнение к вышесказанному мне также пришлось удалить старый сертификат из цепочки для ключей и органайзера.

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

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

Для Xcode 8.3.2:

  1. Xcode-> Настройки-> Учетные записи
  2. Выберите Apple ID
  3. Дважды щелкните свою команду
  4. Нажмите "+" внизу слева, чтобы "Создать сертификат"
  5. Выберите iOS разработки
  6. Нажмите "Готово"

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

Чтобы добавить решение выше, вы можете использовать прекрасный xcodeproj gem, чтобы помочь с такими вещами. Обратите внимание, он конвертирует ваш OpenStep key = value; стиль plist для 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

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

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

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

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

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

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

  1. Открыть xCode
  2. Перейти к продукту -> пункт назначения -> устройство iOS
  3. Перейти к продукту -> Архив
Другие вопросы по тегам