Xcode 5: Помилки прав підпису коду


149

Я створив нову програму, яка підтримуватиме IOS 7. Я отримав новий XCode 5 GM і спробував підписати свої програми за допомогою мого свіжого профілю надання та сертифікату розповсюдження, але у мене проблеми з дистрибуцією. Я постійно отримую таку помилку:

"Недійсні права на підписання коду. Права у підписі пакета додатків не відповідають тим, які містяться у профілі резервування. Відповідно до профілю надання, пакет містить ключове значення, яке не дозволено: '[XXXX.com.sample .company] 'для ключа' групи брелоків-доступу '.

Також така ж помилка для ключового значення, що називається application-identifier.

Скріншот помилки:

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

Відповіді:


208

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

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


6
Щоб додати цю відповідь - я мав і типи розподілу, і випуску для профілю надання. Я отримав цю саму помилку, і це було тому, що у мене був встановлений профіль розробки для типу випуску (я думав, що я використовую тип розподілу, і не помітив типу випуску). Як тільки я встановив це на свій профіль дистрибуції, він спрацював.
Бек

4
Щоб уточнити цю відповідь далі, я намагався встановити свій профіль надання та особу підпису коду у верхньому рядку кожного, використовуючи комбінований вигляд. Це все-таки повернеться до <Кілька значень>. Однак, коли я розширив обидва ряди, я побачив підрозділи "Будь-який iOS SDK" для кожної конфігурації, встановленої None, хоча рядки Debug / Release вказували правильний профіль / особу підпису. Архівація в такому стані все ще давала мені помилку, доки я чітко не встановив усі рядки "Будь-який iOS SDK" на їх належні значення.
qix

1
Ми витратили дні на цей! погано про це ми ще повинні вибрати той же профіль знову при створенні ПНД. Як ти дізнався про це, Бенджамін?
cregox

2
На жаль, це не працює для мене. Я перевірив свої профілі на веб-сайті developer.apple.com, і ввімкнено Ігровий центр та додаток In App. Я не використовую жодного і цікавлюсь, чи це може бути проблемою.
JScarry

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

55

Якщо ви схожі на мене, і ви думаєте, що ви спробували ВСЕ , архівували свій проект понад десять разів, ударили головою про клавіатуру і все одно отримаєте цю помилку. Будь ласка, зробіть собі послугу і просто перезавантажте XCode , це працювало для мене. Колись Apple ... Я тебе ненавиджу.


Я створив два різних додатки за один сеанс xcode і отримав 1000 помилок. перезапуск працював. спасибі!
donmarkusi

Це працювало і для мене. Я використовую Xcode 6.3. Не вдалося вибрати обліковий запис Apple Dev для підписання коду. Повідомлення про повну непов’язану помилку відображалося щоразу, коли "iios 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 вимагала їх увімкнути.
Метт H

6

У моєму випадку (вибачте) я перейшов "Команда" на "Немає" в -> Загальне -> Ідентичність

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

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 і перевірте ідентифікатор програми для свого додатка, натисніть на додаток, щоб побачити його "Прикладні послуги" та побачити перевірили, потім перейдіть до XCode і перевірте розділ «Можливості», щоб переконатися, що у обох є однаковий список служб Apple на обох

4. Переконайтеся, що ви призначили дійсний профіль надання послуг для вашої програми перед підтвердженням - двічі перевірте свій профіль резервування для вашої програми в Apple Member Center, переконайтесь, що його термін дії не закінчився, чи має правильний ідентифікатор додатка з правильним ідентифікатором пакета та розповсюдженням . Завантажте та натисніть на новий профіль надання, щоб переконатися, що в ньому є XCode, або перейдіть до XCode> Налаштування> Облікові записи> натисніть на свій рахунок та "Переглянути деталі", а потім натисніть кнопку в нижньому куті, щоб синхронізувати всі профілі до XCode. У вас повинен бути доступний профіль, який ви можете вибрати зараз у розділі «Підписання коду». Після того, як у вас є правильний профіль забезпечення, ви можете встановити рядки "Ідентифікатор підпису коду" на правильний параметр для цього профілю забезпечення.

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

5. ЯКЩО ВСІ ВІДПОВІДИ НЕПРАВИ - Очистіть проект та перезапустіть XCode та деякі Apple магії, можливо, спрацює чудово наступного разу, коли ви відкриєте проект та спробуєте перевірити його.


2

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

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

Тепер ви готові знову відкрити, архівувати та подати в App Store - voilà! Це працює знову!

Як я думаю, це працює

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


2

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

Але, нарешті, вдалося вирішити проблему!

Проблема у мене була зі старим додатком, якого я не торкався більше 3 років, і тепер я збирався випустити довгоочікуване оновлення. З часу, коли я випустив додаток, Apple оновлює, як працюють сертифікати та ідентифікатор додатка. Вони ввели концепцію Team Id, яку, здається, рекомендують використовувати. Зокрема, на сайті Apple "Сертифікати, ідентифікатори та профілі" відбулось багато змін.

Там я зрозумів, що профіль Provisioning, який я використовував для дистрибуції App Store, був підключений до ідентифікатора додатка, ED8xxxxxxx.com.rostsolutions.*але, дивлячись на ідентифікатор програми для гри, яку я збирався подати, помітив, що ідентифікатор програми був ATMxxxxxxx.com.rostsolutions.Swisch. Отже, префікс App Id не збігався! Це, здавалося, було корінь проблеми. Тому я створив новий профіль надання послуг, підключений до ідентифікатора програми 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 чому! ????
Сукіма

2

Мою проблему було вирішено, видаливши мій Apple ID з Налаштування-> Облікові записи, а потім знову додавши його. Потім усі мої файли профілів про надання показали на панелі утиліти Переглянути деталі. Я помилково вибрав "Профілі надання Mac Team: *" замість реального профілю надання дистрибуції для проекту, думаючи, що це загальний вибір. Надання файлів має бути специфічним для проекту. О, і BTW, переконайтеся, що ваш профіль надання прав має правильні права (наприклад, Карти). Мені вдалося випустити додаток із OSX Maps без прав, і Apple це схвалила - але жодна Карта не з’явилася у виробничій версії!


1

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


1

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

Це говорить про те, що ця проблема може виникнути, коли ваш ідентифікатор пакета проектів відрізняється від того, який ви ввели на веб-сайті iTunes Connect .


1

Я думаю, що xcode 5 використовує "реліз" замість "розподілу", який ви можете створити самостійно.


1

Якщо все вище не вийшло (у моєму випадку через пару днів не пощастило все спробувати), у мене є лише одна програма для Mac. Будьте уважні з ОТМЕНОЮ!

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


1

Я боровся з подібною проблемою (я будував для спеціальної дистрибуції). Єдине, що змінилося з часу останнього успішного розгортання, - це додавання двох пристроїв до профілю надання.

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

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

Я також рекомендую утиліту iPhone Configuration Utility , яка, незважаючи на свою назву, корисна для перевірки, які профілі забезпечення у вас є на комп’ютері.


1

ПОМИЛКА ITMS-9000: "Цей пакет недійсний. Нові додатки та оновлення додатків, що надсилаються в App Store, повинні бути створені з публічними (GM) версіями XCode 5.1.1 або новішої версії та iOS 7 SDK. Не надсилайте програми, створені за допомогою бета-версії програмного забезпечення.


0

Якщо декілька розробників використовують один і той же обліковий запис учасника центру. Один з них не може використовувати сертифікат, створений іншими, тому що вони використовували запит на сертифікат, створений за допомогою своїх комп'ютерів.

Потрібно використовувати створений вами сертифікат (запит на сертифікат, створений за допомогою комп'ютера).

Альтернативно, сказав їм надіслати вам профіль розробника. не впевнений у назві. використовувати сертифікат, створений на іншому комп’ютері.


0

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


-1

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

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

2) Тепер виберіть ціль і перейдіть до створення параметрів. У налаштуваннях випуску ідентифікації підпису коду виберіть "Розподіл iOS" для "Будь-який SDK для iOS". А потім, у налаштуваннях випуску профілю випуску, виберіть свій профіль розповсюдження для "Будь-який SDK для iOS". Після цього ваш параметр виходу коду для підпису коду повинен автоматично змінитися на "Розподіл iPhone".

3) Заархівуйте свою збірку та підтвердіть. Тепер це повинно працювати добре. Це воно!

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