Профіль не відповідає значенню файлу прав для ідентифікатора програми


92

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

ось що спливає

Будь-яка допомога буде вдячна.

info.plist


1
Покажіть свій entitlements.plistфайл.
Імад Алі,

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

там сказано, що я більше не можу розміщувати посилання, я збираюся сісти в літак для Чикаго, якщо хтось щось придумає
Пол Реймонд,

Відповіді:


208

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


3
Не знаю, чому це спрацювало, але все ж таки, підтримка Apple була меншою, ніж корисною.
Пол Реймонд,

13
Дякую за це - після увімкнення / вимкнення він створив порожній список .entitlements поруч із xcodeproj. Схоже, саме це шукає процес подання. Можливо, проблема лише в Xcode 9 для існуючих програм, які не потребують жодних дозволів / можливостей.
Ендрю Вуд,

3
Те ж саме. Античний проект. Велике спасибі за пропозицію переключити можливість, тепер є порожній .entitlements, який приймається. Подання помилки в Apple.
RickJansen

6
Цілий вечір відлупцював на цьому bs. Мені довелося увімкнути та вимкнути, що створило порожній файл прав, а потім мені довелося вказати моє налаштування збірки «Підписання коду» на цей порожній файл.
Адам Уейт

2
У Xcode 10.0beta5 це все ще відбувається. Для мене це сталося через зміну назви проекту після створення прав. Увімкнення та вимкнення iCloud перейменовує файл прав та оновлює його ім'я в налаштуваннях збірки. Вміст файлу був однаковим. Здається, завантажувач піклується про ім'я файлу прав, незалежно від назви файлу налаштувань збірки.
Троя

40

Клацніть правою кнопкою миші на Finder -> Перейти до папки ...

~/Library/MobileDevice/Provisioning

Для Xcode 11

~/Library/MobileDevice/Provisioning Profiles/

Видалити всі профілі підготовки, готово.


1
в моєму випадку папкою є "~ / Library / MobileDevice / Provisioning Profiles"
LightMan

Погодьтеся, це правильна відповідь, просто з Xcode 11 шлях є~/Library/MobileDevice/Provisioning Profiles/
Маріус Кажемекайтіс

Чому це вирішує проблему? Що ми щойно видалили? Чи це має якісь побічні ефекти?
markdon

Ви видаляєте профілі підготовки, додані автоматично за допомогою Xcode або вручну, відкриваючи профіль із веб-сайту developer.apple.com Якщо ви не хочете втрачати інші профілі, ви можете використовувати щось на зразок ... grep -ir YOUR_APP_ID ~ / Library / MobileDevice / Provisioning \ Profiles; Щоб показати, які профілі відповідають. Просто видаліть їх, і це виконає те саме завдання.
Кріс Дуглас,

33

Створена вами програма має неправильне application-identifierзначення, на що очікує профіль підготовки. Сертифікат для appID com.example.foo для команди 2ABCDEFG буде очікувати ідентифікатор програми: 2ABCDEFG.com.example.foo, ваша програма заявила, що її ідентифікатор app був com.example.foo, але ідентифікатор програми не збігався , або ви використовуєте неправильний префікс команди, або ви неправильно налаштували bundleID.

У моєму випадку я використовую схеми побудови, щоб дозволити мені створити додаткову програму та програму qa. com.example.foo для продукту та com.example.foo.qa для контролю якості. Я встановив мій bundleIdentifier в Info.plist на $ (PRODUCT_BUNDLE_IDENTIFIER) $ (BUNDLE_SUFFIX), який чудово працює в симуляторі та на пристрої для роботи з різними програмами, однак, коли програма генерує свій ідентифікатор програми на етапі архівування, не повинен читати bundleIdentifier, згенерований Info.plist.

Щоб виправити ситуацію, я відредагував FooProject.xcodeproj / project.pbxproj (за допомогою текстового редактора), щоб змінити мою збірку QA BuildSettings PRODUCT_BUNDLE_IDENTIFIER на com.example.foo.qa

Ви можете ознайомитися з Технічними запитаннями та відповідями Apple, щоб побачити, як вони глибоко занурились у вирішення цього питання. Після запуску прав кодового дизайну на експортованій програмі та перегляду ідентифікатора програми, з якою щойно була створена ваша програма, повинно бути досить швидко зрозуміти, що ви робите неправильно. https://developer.apple.com/library/content/qa/qa1879/_index.html Я не знайшов цю сторінку в своєму пошуку в Google, оскільки вони насправді не використовують фразу з повідомлення про помилку або викликають програму -identifier на повне ім'я, але замість цього скажіть ID програми.

Крім того, вирішення цієї проблеми не полягає у створенні нового профілю підготовки, який має дозвіл ідентифікатора програми, він має це дозвіл, однак значення в профілі підготовки та ваш додаток повинні відповідати.


2
Дякую! Я зміг виправити, змінивши налаштування збірки під упаковкою, щоб використовувати власну змінну для суфікса в ідентифікаторі набору продуктів. наприклад com.mycompany.myapp $ (BUNDLE_ID_SUFFIX), і це вирішило. Тому мені не довелося редагувати файл проекту вручну, і я міг легко підтримувати різні ідентифікатори пакета для кожного середовища.
n8tr

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

Це спрацювало для мене. Я створював додаток Ionic і зрозумів, що тестував на іншому рахунку. Я використав com.foo.testName і змінив його, коли будував із правильним обліковим записом. Здається, com.foo.testName все ще був у файлі
pbxproj

Щиро дякую, саме це блокувало мою перевірку, і пояснення дуже чітке!
MDH

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

9

Можливо, файл .entitlements {project} відсутній. Виконання згаданого @samkass автоматично генерує файл, і він буде працювати. Отже, просто перейдіть на вкладку можливостей, увімкніть що-небудь і вимкніть її.


Це безглуздо, але мені це вдалося для кількох старих проектів, які я оновлював.
aspro

7

Змінивши перемикач iCloud на, увімкнення та вимкнення iCloud, ми позбулися помилки, сказавши, що:

Профіль не збігається зі значеннями файлу прав для ідентифікатора програми та прав доступу до групи ключів.


3

У Xcode 11 це може статися, коли у вашому проекті немає файлу .entitlement. Рішенням було б додати будь-яку випадкову можливість, натиснувши "+ Capability" у розділі "Signing & Capabilities" (що веде до створення файлу .entitlement), а потім видалити цю можливість. Це дозволить вам автоматично надати сертифікат.


2

Будь ласка, перевірте функції своєї програми, які потрібні для вашої програми, наприклад, при купівлі додатка, push-сповіщення, аудіо інтер App, комплект Siri тощо.

Це єдина причина такого типу помилок.

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

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


Я нічого не вмикав. Це просто дуже засмучує.
Paul Raymond

чи є у вашому додатку якась функція, про яку я згадав вище
Tech

Пізніше я прикріплю скріншот, але немає жодних push-сповіщень або покупок додатків для програми.
Пол Реймонд,

чого саме ти хочеш знімати на екрані? в plist не згадується про права.
Paul Raymond

2

Я зайшов на вкладку Можливості цілі, увімкнув Спільний доступ до брелоків, і він починає працювати


2

Для мене фокус полягав у тому, щоб

  1. додати / видалити можливість для цілі (у моєму випадку віджет);
  2. переконайтесь, що створений файл прав вказаний у налаштуваннях збірки;
  3. і додати ключ "APS Environemnt" зі значенням "розвиток" до файлу pravulemenets.

1

У Xcode 10 я змусив це працювати, перемістивши файл прав у правильну папку в Project Navigator. У мене не було файлу прав, але мені вдалося отримати його, перемикаючи функції на вкладці можливостей.

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


1

Я отримав ту саму помилку, і жодне з наведених вище рішень не вирішило проблему в моєму випадку.

Мені вдалося змінити параметр "Можна налагодити" у файлі "Entitlements.plist" з "НІ" на "ТАК".


1

У моєму випадку проблема полягала в наступному: профіль підготовки, що використовується для кроку побудови, був створений для іншого ідентифікатора програми, ніж профіль підготовки, який використовується для кроку експорту.

Тож переконайтеся, що ви використовуєте той самий профіль підготовки для етапу побудови та експорту.


Тому що я хотів підкреслити, що ця помилка може статися через різні профілі підготовки на етапі побудови та експорту. Повідомлення про помилку не є корисним для пошуку першопричини в цьому випадку. Що стосується того, чому відповідь запізнюється - ця помилка не пов’язана з певним періодом часу. Так сталося 1 рік тому і зараз відбувається все одно. Прийнята відповідь не спрацювала у моєму випадку.
Олексій Комов

1

Мені вдалося те, що я створив архів у XCode 11 і завантажив у нього бета-версію Xcode 12.


0

Перевірте можливості додатка з параметрами, які ви ввімкнули для свого ідентифікатора програми в обліковому записі розробника.


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

Ви можете поділитися скріншотами обох?
KavyaKavita

що ти хочеш зробити скріншот?
Paul Raymond

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

0

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


0

TL; DR: перевірте свій ідентифікатор програми та переконайтеся, що послуги відповідають вашому цільовому показнику.


Зі мною сталося те, що я дозволив Xcode 10.1 допомогти мені створити ідентифікатор програми, і після цього я зіткнувся з проблемою, як описано тут. (Я вибрав ідентифікатор програми whildcard, коли створював програму в iTunesConnect, тож навіть не підозрював, що це було зроблено.) Коли я відкрив портал розробників iOS, новий ідентифікатор програми автоматично вмикає Game Center і In App Purchase.

Оскільки мені не вдалося увімкнути Game Center у вашому Target -> Capabilities, я ввімкнув In Purchase App, і тоді мою програму можна було підписати та завантажити.


0

Коли ми зіткнулися з однією і тією ж проблемою, ми спробували всі перераховані вище речі, але жодна з них не спрацювала.

Нам вдалося змінити ідентифікатор набору, щоб він не був ідентичним попередньому, наприклад "com.name.App" на "com.name.App2"; нехай xcode намагається отримати / створити профіль підготовки, а потім повернути його до початкового.

Отримав цю ідею з цієї теми на форумах розробників Apple - https://forums.developer.apple.com/thread/114539


0

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

З’ясувалося, що мій проект все ще вказував на файл дозволів цілі ORIGINAL, а не мав власний. Щоб вирішити цю проблему, я перейшов до оригінального файлу прав у Finder (наприклад, $ {SRCROOT} /MyProject/Entitlements/TargetName.entitlements ), створив копію в тій же папці, а потім перейменував її (наприклад, NewTargetName.entitlements).

Потім я відкрив новий файл прав і змінив поле ідентифікатора програми, щоб відповідати закінченню ідентифікатора набору моєї нової цілі (наприклад, ABCDEFGH.US.co.fake-company.superduperapp-newtargetname ).

Нарешті, я оновив поле «Код підписання прав» у налаштуваннях збірки до шляху до мого файлу прав (для мене це було щось на зразок $ {SRCROOT} /MyProject/Entitlements/TargetName.entitlements ).

Я повернувся до вкладки Підписання та можливості, і ось, проблема була виправлена. Сподіваюся, хтось там знаходить це корисним.


0

Перейдіть на вкладку Інформація Xcode та змініть поле ідентифікатора набору - після зміни назви програми воно не змінилося, хоча я змінив ідентифікатор набору на вкладці Загальне. Наведені вище виправлення не працювали для мене, але це зробило миттєво.


0

У мене виникла проблема з абсолютно новим додатком, у Xcode 12 beta 3 ( подання програм розпочалось сьогодні ).

У Xcode було включено "Автоматичне керування підписанням". Однак ідентифікатор команди, який відображається в "Сертифікаті підписання", не збігався з ідентифікатором команди, що відображається на веб-сайті iTunes Connect. Це було першопричиною, яка перешкоджає завантаженню програми.

Як я це виправив:

  1. Я вручну створив профіль підготовки для розповсюдження в App Store
  2. У Xcode я натиснув "Завантажити профілі вручну" в меню Налаштування -> Обліковий запис
  3. Потім я вимкнув "Автоматичне керування підписанням".
  4. Як тільки я вибрав профіль підготовки у спадному меню, правильний ідентифікатор команди з’явився в розділі «Сертифікат підписання»

0

Я зіткнувся з тією ж проблемою під час налаштування конвеєру Gitlab, який запускає cmd exportArchive і завантажує в AppStore. Мені вдалося змусити його працювати, змінивши DEVELOPMENT_TEAM у налаштуваннях збірки на ту саму команду, яку було вибрано в розділі Підписання та сертифікати.

Оскільки раніше для нього було встановлено порожнє значення, яке за замовчуванням використовувало інший ідентифікатор DEV TEAM, який був неправильним і не збігався, і він скаржився на те, що "ідентифікатор програми" = 12331232.com.bannana.apples.peach не відповідає. Що призвело мене до встановлення правильної команди DEV, і це спрацювало.

Xcode ver: Версія 11.3.1

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


0

Наша установка

Кілька цілей:

  • підпрограми
  • дивитися
  • кліп програми
  • сьогодні віджет

... і використовуйте iCloud.

Увімкнення та вимкнення iCloud для нас не було можливості. Ми вже використовуємо його у виробництві, і, скоріше, не возитись з ним ... Я отримав повідомлення оригінального запитання і цю варіацію в якийсь момент:

Профіль не збігається зі значеннями файлу прав для ідентифікатора програми та прав доступу до групи ключів.

Рішення

Натякаючи на інші відповіді тут, ми переконалися, що всі цілі матимуть .entitlementsфайл. Якщо ціль не мала жодної, ми створили порожню таку форму так:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
</plist>

... і вказав, що його ціль Code Signing Entitlementу Build Settingsпорожньому .entitlementsфайлі.

Вирішено!


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