Xcode не распознает мой новый профиль обеспечения - PullRequest
21 голосов
/ 13 марта 2011

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

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

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

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

Ответы [ 9 ]

17 голосов
/ 13 марта 2011

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

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

ВАЖНО: Как и все, что связано с изменением файлов, которые вы не должныНе изменяйте: убедитесь, что вы создали резервную копию вашего .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 итеперь мое приложение успешно собирается и устанавливается на мои устройства с использованием нового профиля обеспечения.

15 голосов
/ 02 июня 2011

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

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

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

1 голос
/ 08 января 2016

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

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

Чтобы добавить к решению выше , вы можете использовать прекрасный 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

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

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

Для Xcode 8.3.2:

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

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

0 голосов
/ 16 декабря 2015

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

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

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

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

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

...