Під час спроби архіву надсилати додаток для iOS, я отримую суперечливу помилку налаштувань надання


312

Тепер я намагаюсь Product> Archive my iOS app to submit. Однак я отримую такі помилки:

У AppName є суперечливі налаштування надання. AppName автоматично підписується для розробки, але конфліктуючу особу, що підписує код, розповсюдження iPhone було вказано вручну. Встановіть значення ідентичності підпису коду 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
Потрібно переконатися, що параметри підписання коду не суперечать проекту та цілі.
макс_

1
Думаю, я перепробував кожну комбінацію параметрів підпису коду між проектом та ціллю. Моя проблема полягає в будь-якому налаштуванні, я не можу досягти успіху, коли я встановив як iOS Distributionв редакторі Target, і мені цікаво, чи потрібно.
vanagar

1
@BenLeggiero ласка , дивіться також stackoverflow.com/a/52573190/341994 . Існує ручний спосіб очищення, як я там пояснюю.
мат

Дякую за вказівник, @matt! Це не стосується безпосередньо проблеми, над якою я працював, оскільки ми робимо додаток для Mac і не використовуємо інтеграцій, таких як Game Center. Хоча буде закладка для цього пізніше!
Бен Леджієро

Відповіді:


897

У мене була така сама помилка, але я вже перевірив "Автоматично керувати підписом".

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


15
Дякую! Це працювало для мене, для всіх, хто використовує cordova для створення платформи ios, я отримував цю помилку, навіть використовуючи останню версію cordova. автоматичне підписання було встановлено за замовчуванням, але команда не обрана. Лише тоді, коли я скасував вибір керування підписанням та вибрав автоматичне підписання, і команда змогла це працювати. дякую Еріне!
Jtello

2
Коли я ще раз перевіряю його, підпис коду автоматично встановлює iOs Developer, але мені потрібно встановити його iOs Distribution, і коли я встановлюю його iOSs Distribution Xcode через той самий виняток, як і раніше, згаданий вище.
ami rt

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

@KimiChiu Так, брат, я.
ami rt

2
Це правильно, але щоб уточнити це трохи більше, ось що я зазнав: - Вам потрібно заздалегідь створити профіль надання дистрибуції вручну (через веб-сайт розробника Apple). Автоматичне підписання не робить це для вас. - У випадку, якщо ідентифікатори підпису коду в налаштуваннях збірки були якимось накрученими: усі 4 для них потрібно встановити на "iOS Developer" (навіть ті, які
випускаються

153

У мене була така ж проблема, я помітив, що якщо ви хочете зробити реліз свого додатка iOs і опублікувати його в App Store, вам зовсім не потрібно вносити в "Підпис ідентифікатора коду" як випуск, просто збережіть його як iOs розробник.

Перейдіть до свого проекту -> Налаштування збірки -> Ідентифікатор підпису коду та передайте все розробнику iOs.

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


3
Так, це працює. Але для спеціальних збірок я повинен відключити автоматичне підписання і перейти туди і встановити "iOS Distribution". Чому Apple реалізувала це таким чином? Це взагалі не має сенсу :(
algrid

це найкраща відповідь. xcode перепише налаштування в локальний при "архіві".
Том Марволо Реддл

будь ласка, подивіться на "Огляд вмісту xxx.ipa:", який відображається після архівації, це "Сертифікат: Розповсюдження iOS".
Том Марволо Реддл

Це має бути правильна відповідь. Прийняте рішення цього питання частково правильне.
Санчіт Кумар Сінгх

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-automatically-signed-for-development-but-a-conflicting-code-signing-identity-iphone-distribution-has- було вказано вручну / 100633/7


3
Спробувавши всі інші відповіді, саме цей, нарешті, змусив мене працювати. Дякую!
mikewagz

1
Тепер файл називається build-release.xcconfig . Ви пропустили один "c" Ось баш-скрипт для цього: `` `` #! / Usr / bin / env bash sed -i "" "s / iPhone Distribution / 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 (сертифікат) iOS. Ви можете перевірити це в розділі Налаштування Xcode> Облікові записи, Переглянути деталі. У цей час також було б непогано зайти в центр учасників і придбати собі додаток для мобільних пристроїв для цього додатка та завантажити та встановити його.

Крок третій . Виберіть "Загальний пристрій iOS" як пункт призначення та виберіть Продукт> Архів. Додаток буде складено, створено архів, і ви вже готові надіслати його в App Store.


Дуже дякую! Це вдалося. Дозвольте мені підтвердити інформацію про крок 2: завантаження "мобільного забезпечення". Це "Профілі (розповсюдження) iOS"? Я просто двічі клацнув завантажений файл, і це та установка, про яку ви згадали тут?
vanagar

Так, саме. Завантажений файл тепер скопійовано у світ Xcode (ви можете викинути оригінал), і він побачить Xcode, коли ви фактично подасте в App Store.
мат

Можливо, за певних обставин вам не потрібно створювати мобільний файл програми App Store, оскільки Xcode створить його автоматично для вас. Але я вважаю, що це все-таки добре зробити її.
мат

2
Смішно, що всі підручники з розгортання, які я бачив, говорять вам про те, щоб вручну змінити налаштування підпису коду для кожної цілі. У мене було ввімкнено автоматичне керування, але я навіть цього не усвідомлював.
Ден

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

52

Якщо ви отримаєте цю помилку

У додатку є конфліктні налаштування надання. Додаток підписується автоматично, але профіль "Ідентифікатор" вказано вручну. В редакторі налаштувань збірки встановіть значення профілю надання "Автоматичне" або переключіться на ручне підписання в редакторі проектів.

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

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


1
Я не розрізняв профіль користувача та систему збирання системи ... тож дякую, що вказали, що це "PROVISIONING_PROFILE"
petrosmm

Це мені допомогло.
Рафал

Це була помилка, яку я шукав і отримав посилання на це питання ТА, але це потрібна відповідь. Зауважте, що спроба фактично вказати значення "Автоматичний" не працює. Потрібно НЕ вказувати все це, незважаючи на те, що повідомлення про помилку говорить про інше. Для мене ми використовуємо файли xcconfig, тому справа в тому, щоб видалити налаштування в конфігураційному файлі, було проблемою.
користувач107172

29

Не забудьте зробити це,

Виберіть Проект -> Налаштування збірки. Шукайте PROVISIONING_PROFILE та видаліть усі дурниці.


1
Мабуть, єдине рішення, яке зробило це для мене, дякую
Олександр Вітанов

4
Це я зробив у поєднанні з зняттям галочки та повторної перевірки автоматичного керування підписом на вкладці Загальні, а потім повторним вибором команди. Дякую Рейн та Ерін. (Гей, поглянь на це, твої імена є анаграмами!)
Дейв Леві

Ну це цікаво @DaveLevy
Rein rPavi

Я не наділяв такої великої заслуги, тому що мій PROVISIONING_PROFILE, здається, не містив сміття, у нього було встановлено "Автоматичний" і виглядало чудово. Видалення та повторне ввімкнення автоматичного підписання зробили трюк!
Рафаель Нобре

1
Він встановлений як "Автоматичний" і його неможливо видалити.
Dror Bar

22

Якщо ви з іонічного світу. Ви можете отримати помилку "підписання конфліктного коду", перебуваючи на етапі "архіву", як показано нижче:

... автоматично підписується для розробки, але суперечливий ідентифікатор підпису коду для iPhone дистрибутив був вказаний вручну. В редакторі налаштувань збірки встановіть значення ідентичності підпису коду на "iPhone Developer" або переключіться на ручне підписання в редакторі проекту. Підписання коду потрібно для типу продукту "Application" в SDK "iOS 10.x"

У цьому випадку перейдіть у розділ Налаштування збірки / під підписом, ідентифікатор підпису коду та виберіть як розробник iOS, а не дистрибутив.

Перейдіть до меню: Продукт / Архів знову, тоді проблема буде виправлена.


2
Проблема полягає в тому, що він скидає кожну збірку ... Це псує наші автоматизовані збірки. Будь-яка ідея, як це змінити в неінтерактивному сценарії?
Webberig

1
Відмінно, це вирішило проблему для мене. Це рішення має ідеальний сенс, заднім числом і з великим вживанням алкоголю.
Стівен Крамер

18

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


6
Це найглуміша відповідь, і вона повністю працює. Я ненавиджу всі обхідні шляхи, які ми маємо робити з Xcode, щоб програма працювала.
Йордан Бендж

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

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

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

15

Перейдіть до створення параметрів, знайдіть ідентифікацію підпису коду та встановіть будь-яке значення SDK iOS для розробника iOS:

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


4
Так, саме це просить зробити повідомлення про помилку. Але ви могли б пояснити, чому на Землі використання "iOS Developer" для версій версій має сенс?
альгрід

як не дивно, це те, що спрацювало і для єдності, породженого проектом з
іна

15

Єдине рішення працювало для мене:

  1. Закрити проект Xcode
  2. За допомогою Finder перейдіть до папки проекту
  3. Клацніть правою кнопкою миші на .xcodeproj та виберіть "Показати зміст пакета"
  4. Клацніть правою кнопкою миші на project.pbxproj, перейдіть на "Відкрити за допомогою" та виберіть TextEdit
  5. Тепер знайдіть ідентифікатор вашого профілю Provision, вказаний у повідомленні про помилку.
  6. Видаліть усі знайдені тексти та нехай очищають профілі надання.
  7. Зберегти та закрити
  8. Відкрийте Xcode
  9. Увімкнути автоматичне управління підписанням

Насолоджуйтесь! Сподіваюся, це стане в нагоді!


Я знав, що це буде якась проблема Xcode. Дякую тонну людину !!!! Він відображався автоматично в налаштуваннях збірки для профілю надання, але все ж давав цю помилку. Слава богу, я не був єдиним із проблемою.
Бурштин K

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

9

Для мене зміна Code Signing Identityдля всіх iOS Developerі для, Debugі для Release.

І Code Signing Styleдо Automatic.

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


8

У моєму випадку я встановив параметр "автоматичний" у "Налаштуваннях збірки".

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


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 явно встановлено на 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, так і для цілей. Тоді автоматичне підписання спрацювало ідеально.

Сподіваюся, це допоможе комусь іншому. :)


6

Знайдіть файл .xcodeproj та відкрийте його за допомогою текстового редактора

Знайдіть поля нижче та зробіть їх такими

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

PROVISIONING_PROFILE = "";

PROVISIONING_PROFILE_SPECIFIER = "";


6
  1. Загальне -> Підписання -> прапорець автоматично керує підписом та вибирає команду

  2. Налаштування побудови -> Підписання -> Ідентифікаційний код підпису коду -> ВСТАВКА ВСІХ для "розробника IOS"


4

На мене працювала лише річ.

Відкрийте проект -> Виберіть ціль -> Перейдіть до налаштувань збірки -> ВИКОРИСТАННЯ пошуку та видаліть вибрані профілі.


2

У моєму випадку мені довелося увійти на веб-сайт розробника Apple і скинути список пристроїв.

Здається, тепер вони вимагають, щоб ви робили це щороку, коли підписка поновлюється, перш ніж мати можливість додавати нові пристрої та генерувати сертифікати.


2

У мене була така ж проблема, яку я виправив, шукаючи "профіль надання" в налаштуваннях збірки розширення акцій

Тоді там було два поля "Профіль надання", одне регулярне і одне застаріле. Черговий був на Автоматичному, але застарілий - ні. Змінення цього на Автоматичне занадто виправило мою помилку.


2

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


Нереально, дякую за вказівку в правильному напрямку. Більше інформації тут: 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

Я відкрив файл проекту в текстовому редакторі "Atom", потім шукав ідентифікатор профілю надання та видаляв його.


0

Змініть свій кодовий вхід на сертифікат про внесок.


Дякую, але я пробував це багато разів останні 3 дні, і невдало кожен раз.
ванагар

0

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


0

Вам потрібно додати сертифікат на виробництво та (або) завантажити його з облікового запису розвитку

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


0

Переконайтесь, що "Ідентифікатор групи продуктів" у назви параметрів збірки відповідає дійсному ідентифікатору пакета. Це працювало для мене.


0

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


0

У мене був цей самий випуск. Я зрозумів, що це тому, що я використовував xcode, поки використовував його. Оскільки оновлення не було встановлено належним чином, це призвело до появи цих помилок. Єдине, що було виправлено, - це кинути xcode та знову відкрити його. Коли я знову відкрив його, це запропонувало мені встановити оновлення. Після встановлення оновлень помилки усунулися.


0

Проблема полягає в налаштуваннях Кордови.

Зверніть увагу на це:

iPhone Distribution has been manually specified

Це не мало для мене сенсу, оскільки я призначив проект автоматично входити в xcode. Як ви, перевірка та зніміть прапорець не спрацювали. Але потім я прочитав останній шлях до файлу і дотримувався його. Шлях до файлу єAPP > Platforms > ios > Cordova > build-release.xconfig

І у файлі явно встановлено розподіл iPhone 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 дистрибутив вказано вручну, але він насправді не говорить де, якщо ви не слідуєте за цим шляхом. Я дивився і псувався з xcode близько трьох годин, намагаючись зрозуміти це. Сподіваємось, що це допоможе комусь у майбутньому.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.