Профиль не совпадает со значением файла полномочий для разрешения идентификатора приложения

92

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

вот что появляется

Любая помощь будет принята с благодарностью.

info.plist

Пол Раймонд
источник
1
Покажи свой entitlements.plistфайл.
Имад Али
Может быть, это потому, что я никогда не искал его раньше, но единственные списки, которые я вижу, содержат информацию, но здесь это второе изображение.
Пол Реймонд,
там написано, что я не могу больше публиковать ссылки, я собираюсь сесть в самолет в Чикаго, если кто-нибудь что-нибудь
Пол Рэймонд

Ответы:

208

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

самкасс
источник
3
Не знаю, почему это сработало, но это так, поддержка Apple была менее полезной.
Paul Raymond
13
Спасибо за это - после включения / выключения он создал пустой список .entitlements рядом с xcodeproj. Похоже, это то, что ищет процесс отправки. Вероятно, проблема только в Xcode 9 для существующих приложений, для которых не требуются какие-либо права / возможности.
Эндрю Вуд
3
Тоже самое. Древний проект. Большое спасибо за предложение о переключении возможности, теперь принят пустой .entitlements. Сообщение об ошибке в Apple.
RickJansen 08
6
Отшлепали весь вечер по этому бс. Мне пришлось включать и выключать, в результате чего был создан пустой файл прав, а затем мне пришлось указать настройку сборки «Права на подпись кода» на этот пустой файл.
Adam Waite
2
В Xcode 10.0beta5 это все еще происходит. Для меня это произошло из-за изменения названия проекта после создания прав. Включение и выключение iCloud переименовали файл прав и обновили его имя в настройках сборки. Содержимое файла было идентичным. Кажется, что загрузчик заботится об имени файла прав независимо от имени файла настроек сборки.
Трой
42

Щелкните правой кнопкой мыши 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; Чтобы показать, какие профили совпадают. Просто удалите их, и он выполнит ту же задачу.
Крис Дуглас
Это исправляет, но вам нужно сначала перейти в Xcode и снять флажок «Автоматически управлять подписью», затем выполнить описанное выше, затем еще раз проверить автоматическую подпись, и все в порядке. Исправил для меня. См. Полное описание здесь :: ottorinobruni.com/…
c0d3p03t
33

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

В моем случае я использую схемы сборки, которые позволяют мне создавать приложение prod и приложение qa. com.example.foo для prod и com.example.foo.qa для QA. Я установил для своего bundleIdentifier в Info.plist значение $ (PRODUCT_BUNDLE_IDENTIFIER) $ (BUNDLE_SUFFIX), что отлично работает в симуляторе и на устройстве для различных приложений, однако, когда приложение генерирует свой идентификатор приложения на этапе архивирования, оно не должен читать bundleIdentifier, созданный Info.plist.

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

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

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

Питер Дитц
источник
2
Спасибо! Мне удалось исправить это, изменив настройки сборки в разделе упаковки, чтобы использовать мою настраиваемую переменную для суффикса в идентификаторе пакета продукта. например com.mycompany.myapp $ (BUNDLE_ID_SUFFIX), и это разрешило его. Поэтому мне не нужно было вручную редактировать файл проекта, и я мог легко поддерживать различные идентификаторы пакетов для каждой среды.
n8tr
Одна из причин, по которой у вас может быть несоответствие идентификатора приложения, заключается в том, что у вас не загружены все профили обеспечения. Ваш архив создается с профилем подстановочного знака, если профиль с точным идентификатором приложения отсутствует, что приводит к несоответствию на этапе экспорта.
diidu
Это сработало для меня. Я создавал приложение Ionic и понял, что тестировал его на другой учетной записи. Я использовал com.foo.testName и снова изменил его при сборке с правильной учетной записью. Похоже, com.foo.testName все еще был в файле pbxproj
Dewald Els
Большое спасибо, это именно то, что блокировало мою проверку, и объяснение очень четкое!
MDH
@ n8tr После почти недели головной боли и разочарований ваш комментарий спас меня. Спасибо.
Behdad
9

Возможно, отсутствует файл {project} .entitlements. Выполнение того, что упомянул @samkass, автоматически сгенерирует файл, и он будет работать. Так что просто перейдите на вкладку возможностей, включите что-нибудь и отключите.

mrhangz
источник
Это глупо, но у меня это сработало для нескольких старых проектов, которые я обновлял.
aspro
8

Переключение переключателя iCloud на включение, создание и отключение iCloud позволило избавиться от ошибки, в которой говорилось, что:

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

Заход солнца
источник
Конечно, это было бы решением! Почему я не подумал об этой совершенно неочевидной вещи, чтобы попробовать. Спасибо, Apple.
Джонатан Плэкетт
3

В Xcode 11 это могло произойти, когда для вашего проекта нет файла .entitlement. Решением было бы добавить любую случайную возможность, щелкнув «+ Capability» в «Signing & Capabilities» (что приводит к созданию файла .entitlement), а затем удалить эту возможность. Это также позволит вам автоматически предоставить сертификат.

Биджой Тангарадж
источник
2

Пожалуйста, проверьте функции вашего приложения, которые требуются для вашего приложения, такие как покупка в приложении, push-уведомление, аудио Inter App, набор Siri и т. Д.

Это единственная причина ошибок такого типа.

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

В большинстве случаев это происходит, когда вы не настроили push-уведомление, когда вы покупаете приложение в ID приложения разработки.

Технология
источник
Я ничего не включил. Это просто очень неприятно.
Пол Реймонд
есть ли в вашем приложении какие-либо функции, о которых я упоминал выше
Tech
Я приложу скриншот позже, но для этого приложения нет ни push-уведомлений, ни покупок в приложении.
Пол Рэймонд,
что именно вы хотите сделать снимком экрана? под plist не упоминаются права.
Пол Рэймонд,
2

Я зашел на вкладку «Возможности» моей цели, включил «Общий доступ к связке ключей», и она начала работать.

Римский
источник
2

Для меня уловка заключалась в том, чтобы

  1. добавить / удалить возможность для цели (в моем случае виджет);
  2. убедитесь, что созданный файл разрешений указан в настройках сборки;
  3. и добавить ключ «APS Environemnt» со значением «development» в файл полномочий.
Йорис Веймар
источник
1

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

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

миккокут
источник
1

Я получил ту же ошибку, и ни одно из вышеперечисленных решений не решило проблему в моем случае.

Что мне удалось, так это изменить настройку «Может быть отлажена» в файле «Entitlements.plist» с «НЕТ» на «ДА».

Joemamma
источник
1

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

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

Алексей Комов
источник
Потому что я хотел подчеркнуть, что эта ошибка может возникать из-за разных профилей подготовки на этапе сборки и экспорта. В этом случае сообщение об ошибке не помогает найти основную причину. Что касается того, почему ответ запоздал, то эта ошибка не привязана к определенному периоду времени. Так было 1 год назад и все происходит сейчас. Принятый ответ в моем случае не сработал.
Алексей Комов
1

Для меня сработало то, что я сделал архив в XCode 11 и загрузил в него бета-версию Xcode 12.

Бадр
источник
0

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

КавьяКавита
источник
Это бесплатное приложение, я ничего не включил, и это очень расстраивает. Он отлично устанавливается на мое устройство, просто не знаю, где искать.
Пол Реймонд
можешь поделиться скриншотами обоих?
KavyaKavita
что вам нужен скриншот?
Пол Рэймонд,
снимок экрана с разделом возможностей и конфигурацией идентификатора приложения в учетной записи разработчика
KavyaKavita
0

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

John316
источник
0

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


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

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

superarts.org
источник
0

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

У нас сработало изменение идентификатора пакета, чтобы он не был идентичен предыдущему, например, «com.name.App» на «com.name.App2»; пусть xcode попытается получить / создать профиль обеспечения, а затем вернуть его к исходному.

Получил эту идею из этой темы на форумах разработчиков Apple - https://forums.developer.apple.com/thread/114539

Акшай Радже
источник
0

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

Оказалось, что мой проект все еще указывал на файл полномочий ОРИГИНАЛЬНОЙ цели, а не на собственный. Чтобы решить эту проблему, я перешел к исходному файлу прав в Finder (например, $ {SRCROOT} /MyProject/Entitlements/TargetName.entitlements ), создал копию в той же папке, а затем переименовал ее (например, NewTargetName.entitlements).

Затем я открыл свой новый файл прав и изменил поле идентификатора приложения, чтобы оно соответствовало окончанию идентификатора пакета моей новой цели (например, ABCDEFGH.US.co.fake-company.superduperapp-newtargetname ).

Наконец, я обновил поле «Права на подписание кода» в настройках сборки, указав путь к моему файлу прав (для меня это было что-то вроде $ {SRCROOT} /MyProject/Entitlements/TargetName.entitlements ).

Я вернулся на вкладку «Подпись и возможности», и вот, проблема была устранена. Надеюсь, кто-то найдет это полезным.

Strafe86
источник
0

Перейдите на вкладку « Информация » Xcode и измените поле идентификатора пакета - после изменения имени приложения оно не изменилось, хотя я изменил идентификатор пакета на вкладке «Общие». Вышеупомянутые исправления не сработали для меня, но это сработало мгновенно.

хардфи
источник
0

У меня была эта проблема с новым приложением в Xcode 12 beta 3 ( отправка приложений началась сегодня ).

В Xcode было включено «Автоматическое управление подпиской». Однако идентификатор группы, отображаемый в «Сертификате подписи», не совпадал с идентификатором группы, отображаемым на веб-сайте iTunes Connect. Это была основная причина, препятствовавшая загрузке приложения.

Как я это исправил:

  1. Я вручную создал профиль подготовки для распространения в App Store
  2. В Xcode я нажал на «Загрузить ручные профили» в настройках -> Учетная запись.
  3. Затем я отключил «Автоматически управлять подписью».
  4. После того, как я выбрал профиль обеспечения в раскрывающемся списке, правильный идентификатор группы появился в разделе «Сертификат подписи»
Энеко Алонсо
источник
0

Я столкнулся с той же проблемой при настройке конвейера Gitlab, который запускает команду exportArchive и загружает в AppStore. Мне удалось заставить его работать, изменив DEVELOPMENT_TEAM в настройках сборки на ту же команду, которая была выбрана в Signing & Certs.

Потому что ранее он был пустым, что по умолчанию использовало другой идентификатор КОМАНДЫ РАЗРАБОТЧИКОВ, который был неправильным и не совпадал, и он жаловался на несовпадение "application-identifier" = 12331232.com.bannana.apples.peach. Это привело меня к настройке правильной КОМАНДЫ РАЗРАБОТЧИКОВ, и это сработало.

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файл.

Решено!

Андрес Канелла
источник
0

Удалить все профили, расположенные в ~/Library/MobileDevice/Provisioning Profiles/

PerfectGamesOnline.com
источник