Исполняемый файл был подписан с недействительными правами

У меня проблема с ad-hoc-распространением на моем iPhone. Я разработал приложение с SDK 3.0. У меня есть лицензия разработчика. В моем проекте добавлены сертификаты и профили подготовки. Таким образом, никаких проблем с этим.

Но когда я пытаюсь установить приложение на свой iPhone, он компилирует проект, а затем отображает ошибку: "The executable was signed with invalid entitlements" в окне "Организатор". Я что-то упускаю? Я обновил свой iPhone с версии 2.2.1 и загрузил последнюю версию SDK из Apple.

Пожалуйста, помогите мне с этой проблемой.

Ответ 1

В "Программе портала" есть довольно хорошие инструкции. Если вы входите в систему

http://developer.apple.com/iphone

Затем нажмите "Распределение" слева и нажмите

Создание и загрузка профиля предоставления распределения для специального распространения

внизу внизу.

Здесь бит ключа:

Для Ad Hoc Distribution выполните следующее:

  • В меню "Файл" выберите "Новый файл" → "ОС iPhone" → "Подписание кода" → "Права". Назовите файл "Entitlements.plist" и нажмите "Готово". Это создает копию файла прав по умолчанию в проекте.
  • Выберите новый файл Entitlments.plist и снимите флажок свойства get-task-allow. Сохраните файл Entitlements.plist. (в Xcode 4, get-task-allow называется "Может быть отлаживается" )
  • Выберите цель и откройте инспектор настроек сборки. В настройке сборки "Подписи кодовых подписей" введите имя файла нового файла Entitlements.plist, включая расширение. Нет необходимости указывать путь, если вы не поставили файл Entitlements.plist где-то, кроме верхнего уровня проекта.
  • Нажмите "Построить". (Примечание. В вашем двоичном файле должна быть плоская, квадратная иконка размером 57x57 пикселей. Этот значок отображается на главном экране iPhone или iPod touch.)

Ответ 2

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

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

Ответ 3

Я обнаружил, что "get-task-allow" необходимо проверить для сборки разработки, но не установлен для сборки Distribution. Самый простой способ добиться этого (AFAIK) состоит в том, чтобы иметь два файла прав в вашем проекте: Entitlements.plist и EntitlementsDebug.plist - и ссылаться на правильный в настройках проекта сборки для различных конфигураций в вашем проекте.

Ответ 4

Права на подписывание кода больше не нужны для специальных сборок в Xcode 4 - см. подробности примечаний в Техническая нота Apple TN2250

Ответ 5

Если вы когда-нибудь входите в ситуацию, для проверки вашей "отладки" (!) на ваш телефон требуется проверка "get-task-allow", проверьте следующее:

a) Проверьте настройку сборки. В "Правилах подписи кода" для отладки не должно быть записи b) временно удалить Entitlements.plist и создать версию отладки. Если он жалуется на недостающий Entitlements.plist, то, вероятно, у вас такая же ситуация, мне пришлось бороться сегодня. c) Создайте снова с помощью Entitlements.plist и включите "get-task-allow". Если он работает сейчас, у вас, вероятно, будет такая же проблема:

После беспорядка с новыми профилями я не смог развернуть свою сборку Debug на телефоне. AdHoc был в порядке. Я проверил a) - пусто. Хм. Я проверил б), - сетует. c) - работал...

В конце концов я рассмотрел project.pbjproj в редакторе и, хотя GUI действительно утверждал, что не было записи для "Права на подпись кода", на самом деле в разделе "Отладка" был один. Я опорожнил его и сделал.

Ответ 6

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

Итак, просто перейдите Сертификаты, идентификаторы и профили выберите свой iOS Provisioning Profiles нажмите на редактирование, затем выберите свое устройство

enter image description here

Ответ 7

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

В конечном итоге я удалил файл Entitlements.plist, а затем создал новый.

Файл > Новый файл > Подпись кодa > Права

Назовите файл Entitlements.plist

Удостоверьтесь, что это в группе Ресурсы в xCode.

В файле Entitlements.plist не был установлен тип BOOL-get-task-allow-allow. Я добавил его, проверил, сохранил, не снял, сохранил. Это заставило меня чувствовать себя лучше.

Затем я удалил профили Adhoc и Release, которые я создал. Повторно загрузили их из портала Provisioning Portal и вернули их в организатор xCode.

Затем я вошел в настройки сборки и удостоверился, что для профилей Debug и Release были назначены правильные профили.

Затем я изменил его на Release/Device. Нажмите кнопку сборки, и она сработала.

Я понятия не имею, почему.

Ответ 8

Ответ Джона на 99% правильный. Я обнаружил, что (по крайней мере, в моей конфигурации) вам нужно открыть инспектор настроек сборки для ПРОЕКТ. Параметры сборки для цели не содержат "Кодовые права подписывания". Возможно, это не имеет значения, если в вашем проекте есть только одна цель. Но если у вас несколько целей, вам нужно перейти к настройкам сборки проекта. В любом случае, после того, как сказал Джон, моя специальная сборка рассылки отлично работала.

Ответ 9

В Xcode 5.1, если вы перейдете в Preferences → Accounts → View Details...

Убедитесь, что статус Signing Identity имеет значение Valid. Если он говорит "Отключено", нажмите кнопку "Плюс" и добавьте соответствующий подписи: iOS Development или iOS Distribution. Xcode заменит его новым, действительным.

Ответ 10

Для меня это решило: https://coderwall.com/p/-ckobg

  • Открыть Project.xcodeproj > project.pbxproj
  • Удалите все строки, подобные этим:
    • PROVISIONING_PROFILE = ...
    • "PROVISIONING_PROFILE[sdk=iphoneos*]" = ...
    • CODE_SIGN_IDENTITY = ...
    • "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ...
  • Задание профилей подготовки и подписи кода для цели снова

Ответ 11

pJosh, это может помочь понять. В моем случае мой профиль Provisioning Profile истекал (Портал Provisioning Portal указал, что он управляется XCode), а также профиль тестирования устройства для приложения. (Я до сих пор не знаю, почему, но на портале появилась кнопка "Обновить" рядом с профилем команды, но при нажатии на нее ничего не получится.)

Итак, я удалил профили, срок действия которых истекает, а затем в XCode перейдите к Organizer (Command-Shift-2), в разделе "Библиотеки/Профилирование профилей", я удалил истекающие. Затем нажмите "Обновить" внизу, введите свой идентификатор Apple и обновите истекающие.

Наконец, на моей цели я пошел в "Настройки сборки", "Подписание кодов" и убедился, что вы выбрали профиль подготовки. Voila, теперь он строит на моем устройстве.

Ответ 12

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

В моем случае у меня было два разных устройства с тем же именем (iPhone 4 и iPhone 4S). Изменение имени одного из них полностью фиксировало эту ошибку для меня...

Ответ 13

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

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

Я обновил профиль профилей в XCode, очистил приложение, отключил свое устройство, перезапустил XCOde и подключенное устройство и побежал, и теперь он работает!

Ответ 14

Я также несколько часов боролся с этим. Исправление очень просто. Отредактируйте файл Entitlements.plist в корневой директории вашего проекта. Найдите строку с надписью <key>get-task-allow</key>. Под ним должно быть <false/>. Измените это на <true/>.

Ответ 15

Извините, что это очень поздно, но я просто рассматривал этот вопрос и нашел что-то, что сработало для меня. Я пошел в PROJECT- > Build Settings и нашел раздел подписи кода. Помимо отладки, был выбран мой профиль распространения, который сказал Iphone Distribution: MY NAME. Вместо этого я выбрал Iphone Developer: MY NAME в раскрывающемся списке под IpodProfile (for bundle identifiers com.myName.myApp, который был профилем подготовки для моего устройства. Надеюсь, это поможет!

Ответ 16

Я только что это случилось с разработчиком в команде, которую я администрирую.

Оказалось, что его сертификат разработчика истек, и после продления я забыл добавить его сертификат в профиль подготовки, который использовал его приложение. enter image description here

Ответ 17

Я не согласился с новым обновленным лицензионным соглашением от Apple.

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

В моем сценарии действительный объект подписи кода не показывался. Когда я выполнил описанную выше процедуру, она была видна, и я смог запустить приложение на устройстве и/или создать файл iPA без особых трудностей.

Ответ 18

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

Проблема возникла из-за того, что у меня только была создана новая схема и я не обновил свои CocoaPods для новых конфигураций. Как видно из изображения, новая конфигурация ad-hoc указывает на конфигурацию Pods.production вместо конфигурации Pods.ad-hoc (и тест соответственно)

Demonstrating a mis-match of ad-hoc configuration and scheme configuration

Чтобы исправить:

  • Задайте конфигурацию оскорблений None - cocoapods не будут генерировать конфиги, если я не сделал это
  • Закрыть XCode
  • Запустить pod install
  • Откроем XCode и настроим новые конфигурации схем для вновь созданных конфигураций.

Что это!

Ответ 19

Проверьте, включено ли устройство в профиль подготовки.