При попытке выполнить архивирование для отправки приложения iOS появляется конфликтующая ошибка настроек настроек


312

Сейчас я пытаюсь «Продукт»> «Архивировать» приложение для iOS, чтобы отправить его Однако я получаю следующие ошибки:

AppName имеет конфликтующие настройки обеспечения. AppName автоматически подписывается для разработки, но вручную указана конфликтующая идентификация подписи кода iPhone Distribution. Установите значение идентификатора подписи кода iPhone Developerв редакторе параметров сборки или переключитесь на ручную подпись в редакторе проекта.

Подписание кода требуется для типа продукта «Приложение» в SDK «iOS 10.1».

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

Я сидел как iOS Distributionв TARGETS > Code Signing Identity > Release > Any iOS SDK. Когда я изменил настройку как iOS Developerздесь, и изменил настройку PROJECTS > Code Signing Identity > Release > Any iOS SDKкак iOS Distribution, я преуспел в архивировании. Мне интересно, нужно ли устанавливать как iOS Distributionв целевом редакторе или нет. И если это обязательно, пожалуйста, кто-нибудь, дайте мне знать, как я могу обойти эту ошибку.

Моя версия XCode - 8.1.


4
Вы должны убедиться, что параметры подписи кода не конфликтуют между проектом и целью.
max_27

1
Я думаю, что я пробовал каждую комбинацию настроек подписи кода между проектом и целью. Моя проблема в любой настройке, я не могу добиться успеха, когда я устанавливаю iOS Distributionв редакторе Target, и мне интересно, если это необходимо.
Ванагар

1
@BenLeggiero Пожалуйста, смотрите также stackoverflow.com/a/52573190/341994 . Существует ручной способ очистки, как я объясняю там.
матовый

Спасибо за указатель, @matt! Это напрямую не относится к проблеме, над которой я работал, так как мы создаем приложение для Mac и не используем интеграции, такие как Game Center. Будем отмечать это позже, хотя!
Бен Легжеро

Ответы:


897

У меня была такая же ошибка, но я уже проверил «Автоматически управлять подписью».

Решение состояло в том, чтобы снять его, затем проверить еще раз и повторно выбрать команду. Затем Xcode самостоятельно исправил все, что вызывало проблему.


15
Спасибо! Это сработало для меня, для любого, кто использует cordova для создания платформы ios, я получал эту ошибку, даже используя последнюю версию cordova. автоматическое подписание было проверено по умолчанию, но команда не выбрана. это было только тогда, когда я отменил выбор управления подписью и выбрал автоподписание, и команда смогла заставить это работать. спасибо Эрин!
Jtello

2
Когда я проверяю это снова, подписывание кода автоматически устанавливает iOs Developer, но мне нужно установить iOs Distribution, а когда я устанавливаю его, iOs Distribution Xcode снова через то же исключение, что и выше.
ami rt

1
@amirt У меня точно такая же проблема, как и у тебя. Вы это исправили?
Кими Чиу

@ KimiChiu Да, брат, я сделал.
ami rt

2
Это правильно, но чтобы прояснить это немного подробнее, вот что я испытал: - Вы должны вручную создать профиль обеспечения распространения (через веб-сайт Apple для разработчиков) заранее. Автоматическая подпись не делает этого за вас. - В случае, если идентификаторы подписи кода в настройках сборки каким-то образом облажались: все 4 из них должны быть установлены на «iOS Developer» (даже те, что для Release) для работы автоматической
подписи

153

У меня была та же проблема, я заметил, что если вы хотите выпустить приложение iOs и опубликовать его в App Store, вам вообще не нужно указывать «Идентификатор подписи кода» в качестве выпуска, просто сохраните его как Разработчик.

Зайдите в Ваш проект -> Настройки сборки -> Идентификация подписи кода и предоставьте все это разработчику iOs.

введите описание изображения здесь


3
Да, это работает. Но для специальных сборок я должен отключить автоматическую подпись и пойти туда и установить вместо этого «Распределение iOS». Почему Apple реализовала это таким образом? Это не имеет никакого смысла вообще :(
algrid

это лучший ответ. xcode будет перезаписывать настройки локально, когда «архив».
Том Марволо Риддл

пожалуйста, посмотрите на «Просмотр содержимого xxx.ipa:», отображаемое после архивации, это «Сертификат: iOS Distribution».
Том Марволо Риддл

Это должен быть правильный ответ. Принятое решение по этому вопросу является частично правильным.
Санчит Кумар Сингх

72

Для тех, кто прибывает из Ionic или Cordova, вы можете попробовать следующее:

Откройте файл yourproject/platforms/ios/cordova/build-release.xcconfigи измените это:

CODE_SIGN_IDENTITY = iPhone Distribution
CODE_SIGN_IDENTITY[sdk=iphoneos*] = iPhone Distribution

в это:

CODE_SIGN_IDENTITY = iPhone Developer
CODE_SIGN_IDENTITY[sdk=iphoneos*] = iPhone Developer

и попробуйте запустить ios cordova build ios --releaseснова, чтобы скомпилировать сборку релиза.

Ссылка: https://forum.ionicframework.com/t/ios-build-release-error-is-automatics-signed-for-development-but-a-conflicting-code-signing-identity-iphone-distribution-has- были-вручную указано / 100633/7


3
Перепробовав все остальные ответы, именно он наконец помог мне. Спасибо!
mikewagz

1
Файл теперь называется build-release.xcconfig . Вы пропустили один 'c' Вот скрипт bash для этого: `` `` #! / Usr / bin / env bash sed -i "" "s / Распределение iPhone / iPhone Developer / g" платформы / ios / cordova / build-release.xcconfig выход 0; `` ``
Кент Булл

3
Вы также можете просто закомментировать строки; настройка iPhone Developer установлена build.xcconfig, эти строки просто переопределяют ее.
Жюль

3
Я просто удалил эти две строки и позволил Xcode автоматически управлять подписью.
Райан Х.

3
Вы можете использовать плагин cordova-custom-config, чтобы сделать это автоматически со следующими строками в config.xml: <custom-preference buildType = "release" name = "ios-XCBuildConfiguration-CODE_SIGN_IDENTITY" value = "iPhone Developer" xcconfigEnforce = " true "/> <custom-preference buildType =" release "name =" ios-XCBuildConfiguration-CODE_SIGN_IDENTITY [sdk = iphoneos *] "value =" iPhone Developer "xcconfigEnforce =" true "/>
FactualHarmony

64

Вы слишком обдумываете это. Процесс значительно улучшен и чрезвычайно прост в Xcode 8. Воспользуйтесь этим фактом.

Шаг первый : ни в коем случае не пытайтесь настроить параметры подписи кода в настройках сборки. Не подходи к ним. Вы будете абсолютно испортить это. Вместо этого отредактируйте цель и выполните всю работу в области «Общие». Лучший подход: настроить себя на автоматическую подпись кода - просто введите свою команду и установите флажок, например:

введите описание изображения здесь

Шаг второй : убедитесь, что у вас есть идентификатор распространения iOS (сертификат). Вы можете проверить это под Предпочтениями XCode> Учетные записи, Детали Представления. В то же время было бы неплохо пойти в центр для участников и получить мобильное приложение App Store для этого приложения, а также загрузить и установить его.

Шаг третий : выберите «Универсальное устройство iOS» в качестве пункта назначения и выберите «Продукт»> «Архив». Приложение будет скомпилировано, архив создан, и вы готовы к отправке в App Store.


Спасибо вам большое! Это удалось. Позвольте мне подтвердить о шаге 2: загрузка "мобильного обеспечения". Это «Профили обеспечения iOS (распространение)»? Я просто дважды щелкнул загруженный файл, и это та установка, о которой вы упоминали здесь?
Ванагар

Да, точно. Загруженный файл теперь скопирован в мир XCode (вы можете выбросить оригинал) и будет виден XCode, когда вы действительно отправитесь в App Store.
Мэт

Может случиться так, что при определенных обстоятельствах вам не нужно создавать файл мобильного обеспечения App Store, потому что Xcode создаст его для вас автоматически. Но я считаю, что это хорошая идея, чтобы сделать так или иначе.
Мэт

2
Забавно, что все учебники по развертыванию, которые я видел, подсказывают вам вручную изменять настройки подписи кода для каждой цели. У меня было включено Автоматически Управление, но я даже не осознавал этого.
Дан

1
@andreszs Автоматическая подпись делает хорошую работу по созданию сертификата и профиля разработки, и это все, что вам нужно для разработки и архивирования. Но когда приходит время распространения в магазине приложений, я считаю хорошей идеей создать профиль распространения вручную и загрузить его, готовый к использованию в процессе экспорта.
Мэтт

52

Если вы получили эту ошибку

Приложение имеет конфликтующие настройки предоставления. Приложение автоматически подписывается, но идентификатор профиля обеспечения был указан вручную. Установите значение профиля обеспечения «Автоматически» в редакторе параметров сборки или переключитесь на ручную подпись в редакторе проекта.

затем убедитесь, что у вас есть пустая опция PROVISIONING_PROFILE в настройках целевой сборки :

введите описание изображения здесь


1
Я не делал различий между профилем пользователя и сборкой системы ... поэтому спасибо, что указали, что это был "
PROVISIONING_PROFILE

Это помогло мне.
Рафаль Завадски

Это была ошибка, которую я искал и получил ссылку на этот ТАК вопрос, но это был ответ, который мне был нужен. Обратите внимание, что попытка указать значение «Автоматически» не работает. Вы не должны указывать все это, несмотря на сообщение об ошибке, говорящее иначе. Для меня мы используем файлы xcconfig, так что это был вопрос удаления настроек из файла конфигурации.
user107172

29

Не забудьте сделать это,

Выберите Проект -> Настройки сборки. Ищите PROVISIONING_PROFILE и удаляйте всю чушь.


1
Наверное, единственное решение, которое сделало это для меня, спасибо
Александр

4
Я сделал это в сочетании с снятием отметки и повторной проверкой Автоматически управлять подписью на вкладке Общие, а затем повторно выбрал команду. Спасибо Рейн и Эрин. (Эй, посмотри на это, твои имена анаграммы!)
Дейв Леви

Ну, это интересно @DaveLevy
Rein rPavi

Я не очень-то верил, потому что мой PROVISIONING_PROFILE, похоже, не содержал мусора, у него был установлен «Автоматический» и он выглядел хорошо. Однако его удаление и повторное включение автоматической подписи сделали свое дело!
Рафаэль Нобре

1
Он установлен как «Автоматический» и не может быть удален.
Дрор Бар

22

Если вы из ионного мира. Вы можете получить ошибку «подписания кода конфликта», когда вы находитесь на стадии «архив», как показано ниже:

... автоматически подписывается для разработки, но вручную указана конфликтующая идентификация подписи кода iPhone Distribution. Установите значение идентификатора подписи кода на «iPhone Developer» в редакторе настроек сборки или переключитесь на ручную подпись в редакторе проекта. Подписание кода требуется для типа продукта «Приложение» в SDK «iOS 10.x»

В этом случае перейдите в «Настройки сборки» / «Под подписью», «Идентификация подписи кода» и выберите «Разработчик iOS», а не «Распространение».

Зайдите в меню: Product / Archive снова, тогда проблема будет исправлена.


2
Проблема в том, что он сбрасывается при каждой сборке ... Это портит наши автоматические сборки. Есть идеи, как это изменить в неинтерактивном скрипте?
Веббериг

1
Отлично, это исправило проблему для меня. Это решение имеет смысл, задним числом и с большим потреблением алкоголя.
Стивен Крамер

18

Для тех, кто прибывает из Ionic или Cordova, вы можете попробовать следующее: Отключите ваши устройства ios от компьютера до этого ios cordova build ios --release(похоже, измените целевое устройство для подписи xcode).


6
Это самый глупый ответ, и он полностью работает. Я ненавижу все обходные пути, которые мы должны сделать с XCode, чтобы заставить приложение работать.
Джордан Бенге

это правильно. Когда у меня подключен iPad вместо iPhone, я получаю эту ошибку. После того, как я отключил все устройства ios и собрал его из командной строки, после этого он работал нормально.
Нил

Абсолютно верно. Я целый день пытался решить эту проблему, и это единственное решение, которое работает для меня.
ulisesvera

1
IOS разозлил меня .. все должно быть решено с помощью перемешивания .... в противном случае, спасибо, чувак
Seloka

15

Перейдите к настройкам сборки, найдите идентификатор подписи кода и установите значение Any iOS SDK для iOS Developer:

введите описание изображения здесь


4
Да, именно это сообщение об ошибке просит сделать. Но не могли бы вы объяснить, почему использование «iOS Developer» для релизных сборок имеет смысл?
algrid

странно, это было то, что работало также для проекта, созданного единством некоторое время назад
ина

15

Единственное решение сработало для меня:

  1. Закрыть проект Xcode
  2. Используя поиск, перейдите в папку проекта
  3. Щелкните правой кнопкой мыши на .xcodeproj и выберите «Показать содержимое пакета».
  4. Щелкните правой кнопкой мыши на project.pbxproj, откройте «Открыть с помощью» и выберите TextEdit.
  5. Теперь найдите ваш экземпляр Provision ProfileId, указанный в сообщении об ошибке.
  6. Удалите все найденные тексты и дайте очистить профили обеспечения.
  7. Сохранить и закрыть
  8. Открыть Xcode
  9. Включить автоматическое управление подписью

Наслаждайтесь! Надеюсь, это будет полезно!


Я знал, что это повлечет за собой проблему с Xcode. Спасибо тонны человек !!!! В настройках сборки для профиля обеспечения он показывал автоматический режим, но по-прежнему выдавал эту ошибку. Слава богу, я был не единственным с этой проблемой.
Янтарь К

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

9

Для меня изменить Code Signing Identityвсе iOS Developerдля обоих Debugи Release.

И Code Signing Styleк Automatic.

введите описание изображения здесь



7

Попробуйте одно из следующих

1. Удаление и добавление платформы ios и перестройка проекта для ios

ionic cordova platform rm ios
ionic cordova platform add ios
ionic cordova build ios --release

2. Изменение настроек сборки Xcode

Решение состояло в том, чтобы снять его, затем проверить еще раз и повторно выбрать команду. Затем Xcode самостоятельно исправил все, что вызывало проблему.

3. Измените следующий код в платформе

Для меня это не имело никакого смысла, так как я настроил проект на автоматический вход в xcode. Как и вы, проверка и снятие отметки не сработали. Но затем я прочитал последний путь к файлу и следовал по нему. Путь к файлу: APP> Платформы> ios> Cordova> build-release.xconfig

И в этом файле iPhone Distribution явно установлен для CODE_SIGN_IDENTITY.

Изменить:

CODE_SIGN_IDENTITY = iPhone Distribution
CODE_SIGN_IDENTITY[sdk=iphoneos*] = iPhone Distribution

Для того, чтобы:

CODE_SIGN_IDENTITY = iPhone Developer
CODE_SIGN_IDENTITY[sdk=iphoneos*] = iPhone Developer

7

Я долго боролся, перепробовал все предложенные решения. Ничто не работает для меня.

Затем я обнаружил проблему: в конце вкладки «Настройки сборки» были «Определенные пользователем настройки» для «PROVISIONING_PROFILE». Я удаляю его для настроек Project и Target build. Тогда автоматическая подпись работала отлично.

Я надеюсь, что это поможет кому-то еще. :)


6

Найдите файл .xcodeproj и откройте его в текстовом редакторе.

Найдите поля ниже и сделайте их такими

CODE_SIGN_IDENTITY = "Разработчик iPhone"; "CODE_SIGN_IDENTITY [sdk = iphoneos *]" = "Разработчик iPhone";

PROVISIONING_PROFILE = "";

PROVISIONING_PROFILE_SPECIFIER = "";


6
  1. Общие -> Подписание -> проверить, автоматически управлять подписью и выбрать команду

  2. Настройки сборки -> Подписание -> Идентификация подписи кода -> УСТАНОВИТЬ ВСЕ "IOS разработчику"


4

Единственное, что сработало для меня.

Откройте проект -> Выберите цель -> Перейдите в Настройки сборки -> Поиск PROVISIONING и удалите выбранные профили.


2

В моем случае мне пришлось войти на сайт Apple Developer и сбросить список устройств.

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


2

У меня была та же проблема. Моя проблема была устранена путем поиска «профиля обеспечения» в настройке сборки расширения общего ресурса.

Тогда там было два поля «Профиль обеспечения», одно обычное и одно устаревшее. Обычный был на Автоматическом, но устаревший не был. Изменение этого на Автоматическое тоже исправило мою ошибку.


2

Для меня я перетащил dump_symsдвоичный файл и кучу скриптов в свою цель сборки, когда я вручную установил Firebase SDK. Удаление тех из моей цели и проекта решило проблему.


Нереально, спасибо, что указали в правильном направлении. Более подробная информация здесь: stackoverflow.com/questions/41056047/…
Dror Bar

2

Использование Xcode 10: ни одно из других решений здесь не сработало для меня.

Эта ошибка, кажется, что-то, что вы не можете исправить в Xcode 10

Мне пришлось вернуться к Xcode 9, чтобы решить эту проблему, а затем обновить обратно до Xcode 10, чтобы я мог запустить свое приложение на iOS 12 на устройстве без эмулятора.

Любые другие решения, найденные в Переполнении стека или где-либо еще, используемые в Xcode 10, отправили меня в бесконечный цикл инициализации конфликтов или проблем с подписанием сертификатов. Кажется, что подпись нарушена в Xcode 10, используете ли вы автоматический метод или выбираете вручную профили обеспечения и сертификаты.

Вы можете вернуться к Xcode 9, сначала удалив Xcode 10 из папки «Программы». Затем установите Xcode 9, используя файл .xip, указанный на этой странице разработчиков Apple. .

В Xcode 9 используйте опцию автоматической сборки. Возможно, вам придется снять флажок «Автоматически управлять подписью» и повторно выбрать его, а также вам может потребоваться отозвать существующий сертификат на developer.apple.com. .

После того, как вы получите приложение для успешной сборки в Xcode 9, вы можете вернуться к Xcode 10 с помощью App Store. После повторного открытия приложения в Xcode 10 все по-прежнему работало. Возможно, вам не нужно этого делать, но мне нужно было сделать для iOS 12, которая требует Xcode 10.


Попробуйте добавить флаг --buildFlag = "- UseModernBuildSystem = 0"
Redwolf

2

Я открыл файл проекта в текстовом редакторе «Атом», затем я искал идентификатор профиля обеспечения и удалил его.


0

Измените свой код, войдите в сертификат распространения.


Спасибо, но я пробовал это много раз за последние 3 дня, и каждый раз терпел неудачу.
Ванагар

0

После обновления до Xcode 8.3.2 у меня была та же ошибка с проектом Cordova. Мне нужно было обновить Cordova (v7.0.0) и платформу iOS (v4.4.0) для работы подписи кода.



0

Убедитесь, что «Идентификатор комплекта продукта» в названии настроек сборки соответствует фактическому идентификатору комплекта. Это сработало для меня.


0

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


0

У меня была такая же проблема. Я понял, что это потому, что я использовал Xcode, когда я его использовал. Поскольку обновления не были установлены правильно, это привело к появлению этих ошибок. Единственное, что исправило это, было выйти из xcode и снова открыть его. Когда я снова открыл его, мне предложили установить обновления. После установки обновлений ошибки исчезли.


0

Проблема в настройках Cordova.

Обратите внимание:

iPhone Distribution has been manually specified

Для меня это не имело никакого смысла, так как я настроил проект на автоматический вход в xcode. Как и вы, проверка и снятие отметки не сработали. Но затем я прочитал последний путь к файлу и следовал по нему. Путь к файлуAPP > Platforms > ios > Cordova > build-release.xconfig

И в этом файле iPhone Distribution явно настроен для CODE_SIGN_IDENTITY.

Изменить:

CODE_SIGN_IDENTITY = iPhone Distribution
CODE_SIGN_IDENTITY[sdk=iphoneos*] = iPhone Distribution

Для того, чтобы:

CODE_SIGN_IDENTITY = iPhone Developer
CODE_SIGN_IDENTITY[sdk=iphoneos*] = iPhone Developer

Это простая вещь, и сообщение об ошибке проясняет, что iPhone Distribution был указан вручную, но на самом деле не говорится, где, если вы не последуете пути. Я искал и искал xcode около трех часов, пытаясь понять это. Надежды это поможет любому в будущем.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.