Xcode не узнает мой новый профиль подготовки
Профиль разработки приложений для разработки приложений истек пару недель назад, поэтому я пошел на портал обеспечения, чтобы получить новый новый. Получив его, я посетил Xcode Organizer, удалил истекший профиль с моих устройств, а также мой Mac, а затем импортировал новый профиль. Xcode немедленно устанавливает профиль на мои устройства, и мое приложение снова запускается на устройствах.
Проблема заключается в том, что, хотя Организатор может видеть новый профиль и устанавливать его как обычно, среда IDE путается между старой и новой. Каждый раз, когда я пытаюсь создать приложение, он прерывается немедленно. Консоль ошибок сообщает мне, что Xcode не может найти старый профиль, потому что указанный GUID принадлежит старой. Это странно; Я думал, что Xcode уже знал бы о новом профиле.
Я попытался удалить новый профиль с моих устройств и моего Mac, а затем переустановить профиль. Не работает, Xcode все еще пытается найти старый. Я также попытался выбрать другой профиль, чтобы Xcode забыл старый, а затем выбрал новый. Я даже пробовал вручную вводить GUID нового в выборе Другие. Тем не менее Xcode по-прежнему настаивает на поиске старого профиля, который уже сейчас ушел с моего Mac.
Как убедить Xcode, что я создал новый профиль подготовки для своего приложения для его использования?
Ответы
Ответ 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" в разделе "Цели" → "Общие" > "Подписание" и подтвердив, что дата "Создана" отражает новый.