Xcode 5: ошибки предоставления права подписи кода


149

Я создал новое приложение, которое будет поддерживать IOS 7. Я получил новый XCode 5 GM и попытался подписать свои приложения, используя свой новый профиль обеспечения и сертификат распространения, но у меня проблемы с распространением. Я постоянно получаю следующую ошибку:

«Недопустимые права подписи кода. Права в подписи комплекта приложения не совпадают с теми, которые содержатся в профиле обеспечения. В соответствии с профилем обеспечения пакет содержит ключевое значение, которое недопустимо:» [XXXX.com.sample .company] 'для ключа' keychain-access-groups ".

Также та же ошибка для значения ключа называется application-identifier.

Снимок экрана с ошибкой:

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

Ответы:


208

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

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


6
Чтобы добавить к этому ответу - у меня были оба типа распространения и выпуска для профиля обеспечения. Я получил ту же ошибку, и это потому, что у меня был установлен профиль разработки для типа выпуска (я думал, что я использовал тип распространения и не заметил тип выпуска). Как только я установил это в свой профиль дистрибутива, это сработало.
Бек

4
Чтобы прояснить этот ответ далее, я пытался установить свой профиль обеспечения и идентификатор подписи кода в строке каждого верхнего уровня, используя комбинированное представление. Это все равно вернуло его к <множественным значениям>. Однако, когда я развернул обе строки, я увидел подзаголовки «Any iOS SDK» для каждой конфигурации, для которых было установлено значение «Нет», хотя в строках «Отладка / Выпуск» был указан правильный профиль / идентификатор подписи. Архивирование в этом состоянии все еще давало мне ошибку, пока я явно не установил все строки «Any iOS SDK» в их правильные значения.
Qix

1
Мы потратили на это дни ! Плохая вещь об этом, мы все еще должны выбрать тот же профиль снова при создании IPA. Как ты узнал об этом, Бенджамин?
Cregox

2
К сожалению, это не работает для меня. Я проверил свои профили на сайте developer.apple.com, и у меня включена покупка Game Center и In App. Я тоже не пользуюсь и задаюсь вопросом, может ли это быть проблемой.
JScarry

4
Чтобы добавить дальнейшие пояснения, обратите внимание, что XCode позволяет вам выбирать информацию о профайле обеспечения как для проекта, так и для цели . Вы должны убедиться, что вы меняете настройки для цели, а не только для проекта.
Брайан Стормонт

55

Если вы похожи на меня и думаете, что пробовали ВСЕ , архивировали свой проект более десяти раз, стучали головой по клавиатуре и все еще получали эту ошибку. Пожалуйста, сделайте себе одолжение и просто перезапустите XCode , у меня это сработало. Когда-нибудь Эппл ... я тебя ненавижу.


Я собрал два разных приложения за один сеанс XCode и получил 1000 ошибок. перезапуск работал. Спасибо!
Донмаркузи

Это сработало и для меня. Я использую Xcode 6.3. Мне не удалось выбрать учетную запись Apple Dev для подписи кода. Абсолютно несвязанное сообщение об ошибке отображалось каждый раз, когда «ios app id« xxxxxxxxx »не поддерживает изменения в функции карт». Простой перезапуск xcode исправил это для меня.
Сахил,

3
Если бы я мог проголосовать за тебя 1000 раз, я бы сделал это. Это сработало для меня. Это случилось на XCode 7.1.
Ману Кантан

25

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

  1. Настройки XCode
  2. Вкладка Аккаунты
  3. Выберите свой Apple ID
  4. Нажмите кнопку «Подробнее» на панели сведений об Apple ID
  5. Нажмите кнопку Обновить в левом нижнем углу.

2
После того, как вы это сделаете, вы должны также повторно запустить команду Build and Archive, чтобы убедиться, что новый профиль применяется. (По крайней мере, это было необходимо для меня.)
Брент Роял-Гордон

12

В моем случае я активировал те же возможности в XCode, что и в службах приложений на developer.apple.com. Это работает для меня

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

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


Это то, что сработало для меня - не могу отключить их в центре разработчиков, и кажется, что iOS 7.0 скомпилировать с Xcode 5.1.1 требует их включения.
Мэтт Х

6

В моем случае (извините) я переключил «Команда» на «Нет» в -> Общие -> Идентичность

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

Кажется, Xcode иногда сильно портится при подписании кода. Или мы, простые смертные, просто не достаточно умны, чтобы понять, что они делают, конечно. Не сдавайтесь, мы все время от времени испытываем пытки при подписании кода!


Вау, ты спас мой вечер, спасибо. Но ... почему это сработало?
Мартин

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

5

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


3

Если кто-то использует GameCenter, проверьте этот раздел в своей цели. Я работал с каким-то старым проектом и было 2 ошибки (но все работало нормально). Отключение и включение обратно решило эту проблему.введите описание изображения здесь

Скорее всего, это действие добавляет право Game Center к идентификатору приложения и обрабатывает его самостоятельно.


3

1. Перейдите в папку проекта, удалите файлы * .entitlements. 2. Затем перейдите в цель проекта xcode -> настройки сборки -> права подписи кода - удалите значения 3.Clean 4.Run


3

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

1. Разрешите XCode постоянно получать доступ к информации вашего профиля обеспечения - если XCode постоянно спрашивает, когда вы запускаете его, иметь доступ к личным файлам вашего компьютера, чтобы он мог получать информацию о профиле обеспечения с опциями, обеспечивающими доступ всегда, а не сейчас, или только один раз - установите ВСЕГДА РАЗРЕШИТЬ доступ

2. Если у вас есть какие-то старые файлы с правами доступа, избавляйтесь от них и от любых признаков с правами на доступ к вашему проекту, - если вы видите файл .entitlements в своем проекте, удалите его (или, по крайней мере, удалите ссылку на него, если вы не уверены вы готовы полностью удалить его), а затем убедитесь, что строка «Права для подписи кода» в разделе «Подписывание кода» в настройках сборки пуста

3. Проверьте свои сервисы приложений в Интернете и сопоставьте их с вашими сервисами в XCode для приложения. Перейдите в Apple Member Center и проверьте идентификатор приложения для своего приложения, нажмите на приложение, чтобы увидеть его «Службы приложений» и увидеть, что вы проверил, затем перейдите в XCode и проверьте раздел «Возможности», чтобы убедиться, что оба имеют одинаковый список служб Apple на обоих

4. Убедитесь, что вы назначили действительный профиль обеспечения своему приложению перед проверкой - дважды проверьте свой профиль обеспечения для своего приложения в Центре участников Apple, убедитесь, что оно не истекло, имеет правильный идентификатор приложения с правильным идентификатором пакета и распространением , Загрузите и щелкните новый профиль обеспечения, чтобы убедиться, что он есть в XCode, или перейдите в XCode> «Настройки»> «Учетные записи»> нажмите на свою учетную запись и «View Details», затем нажмите кнопку в нижнем углу, чтобы синхронизировать все профили с XCode. У вас должен быть профиль, доступный для выбора в разделе «Подписывание кода». Если у вас есть правильный профиль обеспечения, вы можете установить для строк «Идентификация подписи кода» правильный параметр для этого профиля обеспечения.

Примечание: если вы делаете сертификат распространения, это может помочь установить все строки «Code Signing Identity» на идентификаторы, которые вы используете для распространения, включая строки отладки.

5. ЕСЛИ ВСЕ ЕЩЕ НЕУДАЧИ - Очистите ваш проект и перезапустите XCode, и некоторое волшебство Apple может просто отлично работать при следующем открытии вашего проекта и попытке проверки.


2

Если вы создаете старый проект 3.1.5, в Xcode 5 есть некоторые ошибки, которые, к сожалению, делают ответ Бенджамина невозможным, так как нет профилей Provisioning для выбора. После долгих часов мучительного чтения файлов проекта Xcode я пришел к такому решению, которое помогло мне:

  • На панели «Служебные программы» (справа) в Xcode 5 в разделе «Документ проекта» перейдите с Xcode 3.1-совместимого на Xcode 3.2-совместимого.
  • Введите название вашей организации.
  • Закрыть проект.
  • Откройте файл вашего проекта, например, open -a TextEdit path/to/name.xcodeproj/project.pbxproj
    • Удалите два предложения распределения ( isa=XCBuildConfiguration).
    • Удалите две сопровождающие строки в buildConfiguration (один вход PBXNativeTargetи один вход PBXProject XCConfigurationLists)

Теперь вы готовы заново открыть, архивировать и отправить в магазин приложений - вуаля! Это снова работает!

Как я думаю, что это работает

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


2

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

Но мне наконец удалось решить проблему!

У меня была проблема со старым приложением, которого я не трогал более 3 лет, и теперь я собирался выпустить долгожданное обновление. С тех пор, как я выпустил приложение, Apple обновляла работу сертификатов и идентификатора приложения. Они представили концепцию Team Id, которую рекомендуется использовать. В частности, сайт Apple «Сертификаты, идентификаторы и профили» с тех пор претерпел множество изменений.

Там я понял, что профиль обеспечения, который я использовал для распространения в App Store, был связан с идентификатором приложения, ED8xxxxxxx.com.rostsolutions.*но, посмотрев на идентификатор приложения для игры, которую я собирался представить, я заметил, что это был идентификатор приложения ATMxxxxxxx.com.rostsolutions.Swisch. Таким образом, префикс идентификатора приложения не совпадает! Это казалось корнем проблемы. Поэтому я создал новый профиль обеспечения, связанный с идентификатором приложения ATMxxxxxxx.com.rostsolutions.Swisch. Используя этот профиль обеспечения, я успешно отправил свое приложение в App Store, а теперь просто скрестил пальцы, чтобы все остальное работало на стороне Apple.

(Сначала я попытался подключиться к новому профилю Provisioning с помощью подстановочного идентификатора ATMxxxxxxx.com.rostsolutions.*, но это не помогло).

Но что меня удивляет, так это то, что когда я смотрю на старое приложение в iTunes Connects и перехожу к бинарным деталям, он говорит, что идентификатор приложения есть ED8xxxxxxx.com.rostsolutions.Swisch. Так почему же на странице «Сертификаты, идентификаторы и профили» указан идентификатор приложения ATMxxxxxxx.com.rostsolutions.Swisch?


Спасибо за публикацию этого Дэниела. Я вижу подобное поведение, которое не позволяет использовать нужные сертификаты и профили. Каждый раз, когда я загружаю сертификат или разрешаю Xcode сделать это, появляется «фантомный» идентификатор команды, который «нарушает» возможности (использование) iCloud в моем случае. Для меня пока нет разрешения.
Дэвид

О, МОЙ БОГ! Та же самая чушь случается с нами с более чем 50 приложениями! Тьфу, фантомная команда убивает нас. Почему Apple, почему! ????
Sukima

2

Моя проблема была решена путем удаления моего Apple ID из Preferences-> Accounts и последующего добавления его обратно. Затем все мои файлы профиля обеспечения появились на служебной панели View Details. Я по ошибке выбрал «Профиль обеспечения Mac Team: *» вместо фактического профиля обеспечения распространения для проекта, полагая, что это был общий выбор. Предоставление файлов должно быть специфичным для проекта. Да, и кстати, убедитесь, что ваш профиль обеспечения имеет правильные права (например, Карты). Мне удалось выпустить приложение с OSX Maps без разрешения, и Apple одобрила его, но в рабочей версии не было карт!


1

В моем случае у меня была та же проблема, мое решение состояло в том, чтобы изменить «Профиль обеспечения выпуска» в настройках сборки перед выполнением архивирования. Я делаю это дважды, один раз для распространения в App Store, а другой - для Ad Hoc. Я также добавляю комментарий к своим архивам. Мой вывод таков, что что-то не так в «повторной подписи архива».


1

Существует очень хороший учебник для решения этой проблемы на этом сайте.

Это говорит о том, что эта проблема может возникать, когда ваш Идентификатор пакета проектов отличается от того, который вы ввели на веб-сайте iTunes Connect .


1

Я думаю, что xcode 5 использует «релиз» вместо «дистрибуция», которую вы можете создать сами.


1

Если все вышеперечисленное не сработало (в моем случае через пару дней не повезло, попробовав все), у меня есть только одно приложение Mac. БУДЬТЕ ВНИМАТЕЛЬНЫ С ОТЗЫВОМ!

1) Отмените вручную все «Распределение приложений Mac» и «Распространение установщика Mac»
2) Очистите соответствующие сертификаты и открытые ключи в связке ключей ( Предупреждение: экспорт перед удалением)
3) Перезапустите Xcode 4) Перейдите (в Safari) на developer.apple .com -> сертификаты и т. д. 5) Создайте CertificateSigningRequest.certSigningRequest в Keychain-> Ассистент сертификатов.
6) Создайте вручную на developer.apple.com как «Распределение приложений Mac», так и «Распространение установщика Mac» с помощью * .certSigningRequest
7) Подготовка Профили -> Распространение -> создать / исправить пользовательское положение для AppStore (я специально назвал его «Профиль обеспечения Mac для AppStore»
8) Xcode -> Настройки -> Учетная запись -> Ваша учетная запись ->Обновить 9) Xcode Clean -> Archive -> Validate


1

Я боролся с подобной проблемой (я создавал для Ad-Hoc распределения). Единственное, что изменилось со времени последнего успешного развертывания, это добавление двух устройств в профиль обеспечения.

После двойной и тройной проверки всех параметров сборки я восстановил профиль обеспечения (ничего не меняя), заново загрузил, и он работал нормально.

Так что обратите внимание на себя: если нет логического объяснения, вы всегда можете попробовать старый добрый IT voodoo.

Я также рекомендую утилиту настройки iPhone , которая, несмотря на название, полезна для проверки того, какие профили инициализации у вас есть на компьютере.


1

ОШИБКА ITMS-9000: «Этот пакет недействителен. Новые приложения и обновления приложений, представленные в App Store, должны быть созданы с использованием общедоступных (GM) версий XCode 5.1.1 или более поздней версии и iOS 7 SDK. Не отправляйте приложения, созданные с помощью бета-версии.


0

Если несколько разработчиков используют одну и ту же учетную запись центра участников. Один из них не может использовать сертификат, созданный другими, потому что они использовали запрос сертификата, созданный на их компьютерах.

Вам необходимо использовать созданный вами сертификат (запрос сертификата, созданный на вашем компьютере).

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


0

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


-1

У меня была такая же проблема, но ничего написанного здесь не помогло мне. Тем не менее, я нашел простой способ, который работал для меня. Вот как это сделать:

1) В своем проекте и настройках сборки Target (s) выберите «None» для всех профилей Provisioning и выберите «Don't Code Sign» для всех идентификаторов подписи кода.

2) Теперь выберите свою цель и перейдите к настройке сборки. В настройке выпуска идентификатора подписи кода выберите «Распространение iOS» для «Any iOS SDK». Затем в настройке Release Provisioning Profile выберите свой профиль распространения для «Any iOS SDK». После этого настройка выпуска идентификатора подписи кода должна автоматически измениться на «Распространение iPhone».

3) Архив вашей сборки и проверки. Теперь все должно работать нормально. Это оно!

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