Исполняемый файл был подписан с недействительными правами
У меня проблема с рассылкой ad-hoc на моем iPhone. Я разработал приложение с SDK 3.0. У меня есть лицензия разработчика. Я добавил сертификаты и профили обеспечения в свой проект. Так что нет проблем с этим.
Но когда я пытаюсь установить приложение на свой iPhone, оно компилирует проект и затем отображает ошибку: "The executable was signed with invalid entitlements"
в окне организатора. Я что-то пропустил? Я обновил свой iPhone с версии 2.2.1 и загрузил последнюю версию SDK от Apple.
Пожалуйста, помогите мне с этим вопросом.
19 ответов
В "Портальной программе" есть довольно хорошие инструкции. Если вы войдете в
http://developer.apple.com/iphone
Затем нажмите Распределение слева и нажмите
Создание и загрузка профиля обеспечения распространения для специального распределения
ссылка внизу.
Вот ключевой бит:
Для Ad Hoc Distribution выполните следующие действия:
- В меню "Файл" выберите "Новый файл" -> "iPhone OS" -> "Подписание кода" -> "Права". Назовите файл "Entitlements.plist" и нажмите "Готово". Это создаст копию файла разрешений по умолчанию в рамках проекта.
- Выберите новый файл Entitlments.plist и снимите флажок свойства "get-task-allow". Сохраните файл Entitlements.plist. (в Xcode 4 get-task-allow называется "Может быть отлажено")
- Выберите цель и откройте инспектор параметров сборки. В настройке сборки "Право подписи кода" введите имя файла нового файла Entitlements.plist, включая расширение. Нет необходимости указывать путь, если вы не поместили файл Entitlements.plist где-либо, кроме верхнего уровня проекта.
- Нажмите "Построить". (Примечание. Ваш двоичный файл должен содержать плоский квадратный значок размером 57x57 пикселей. Этот значок отображается на главном экране iPhone или iPod touch.)
Эта ошибка также может возникать, если вы пытаетесь профилировать приложение, если устройство не включено в профиль обеспечения.
Убедитесь, что ваше устройство включено в профиль обеспечения Dev, который вы хотите использовать. Почему-то сообщение об ошибке вводит в заблуждение. Мои права на самом деле были в порядке.
Я обнаружил, что "get-task-allow" нужно проверять для сборок разработки, но не проверять для сборок дистрибутива. Самый простой способ сделать это (AFAIK) - это иметь два файла разрешений в вашем проекте: Entitlements.plist и EntitlementsDebug.plist - и ссылаться на нужный в настройках проекта сборки для различных конфигураций вашего проекта.
Права на подпись кода больше не нужны для специальных сборок в Xcode 4 - см. Подробности в технической заметке Apple TN2250.
Если вы однажды попали в ситуацию, то для развертывания вашей отладочной (!) Сборки на вашем телефоне требуется проверка "get-task-allow", проверьте это:
а) Проверьте настройки сборки. Там не должно быть записи в "Право подписи кода" для отладки б) Временно удалите Entitlements.plist и создайте свою версию отладки. Если он жалуется на отсутствующий Entitlements.plist, то у вас, вероятно, такая же ситуация, мне пришлось бороться сегодня. c) Создайте заново с помощью Entitlements.plist и включите "get-task-allow". Если это работает сейчас, у вас, вероятно, та же проблема:
После возни с новыми профилями я не мог развернуть мою сборку Debug на телефон. AdHoc был в порядке. Я проверил) - пусто.. Хм. Я проверил б) - жалуется. в) - работал...
В конце концов я изучил project.pbjproj в редакторе и - хотя GUI действительно утверждал, что не было записи для "Право подписи кода", фактически она была в разделе "Отладка". Я опустошил это и было сделано.
Это связано с тем, что ваше устройство, на котором вы запускаете приложение, не выбрано с вашим профилем обеспечения.
Так что просто пройдите сертификаты, идентификаторы и профили iOS Provisioning Profiles
нажмите на редактировать, затем выберите ваше устройство
Я только что провел захватывающие три часа, борясь с этим. Я только что обновил проект до 4.2, и по какой-то причине он просто не сработал.
В конце концов я удалил файл Entitlements.plist, а затем создал новый.
Файл> Новый файл> Подпись кода> Права
Назовите файл Entitlements.plist
Убедитесь, что он находится в группе ресурсов в xCode.
Он не поместил тип BOOL get-task-allow в файл Entitlements.plist. Я добавил, проверил, сохранил, снял галочку, сохранил. Это заставило меня чувствовать себя лучше.
Затем я удалил созданные мной профили Adhoc и Release. Повторно загрузите их с портала Provisioning Portal и поместите обратно в органайзер xCode.
Затем я вошел в настройки сборки и убедился, что правильные профили были назначены профилям отладки и выпуска.
Затем я изменил на Release / Device. Нажмите кнопку сборки, и это сработало.
Понятия не имею почему.
Джон отвечает на 99% правильно. Я обнаружил, что (по крайней мере, в моей конфигурации), вы должны открыть Инспектор настроек сборки для ПРОЕКТА. Настройки сборки для цели не содержат "Правил подписи кода". Возможно, это не имеет значения, если у вас есть только одна цель в вашем проекте. Но если у вас есть несколько целей, вам нужно перейти к настройкам сборки проекта. В любом случае, после того, что сказал Джон, моя специальная сборка дистрибутива сработала отлично.
В Xcode 5.1, если вы заходите в Настройки -> Учетные записи -> Просмотр сведений...
Убедитесь, что статус подписывающего удостоверения действителен. Если написано "Отменено", нажмите кнопку "Плюс" и добавьте соответствующую подпись: iOS Development или iOS Distribution. Xcode заменит его новым, действительным.
Для меня это решило: https://coderwall.com/p/-ckobg
- Откройте Project.xcodeproj > project.pbxproj
- Удалите все строки, подобные этим:
PROVISIONING_PROFILE = ...
"PROVISIONING_PROFILE[sdk=iphoneos*]" = ...
CODE_SIGN_IDENTITY = ...
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ...
- Установите профили инициализации и кодовые подписи для цели снова
Если бы эта проблема возникала, когда казалось, что все настроено правильно, настройки сборки указывали на правильный профиль обеспечения, правильная настройка подписи кода и т. Д.
Проблема возникла из-за того, что я только что создал новую схему и не регенерировал свои CocoaPods для новых конфигураций. Как видно из изображения, новая специальная конфигурация указывает на Pods.production
конфигурация, а не Pods.ad-hoc
конфигурация (и тестирование соответственно)
Чинить:
- Установите нарушающую конфигурацию на
None
- Cocoapods не будет генерировать конфиги, если я не сделаю это - Закрыть XCode
- Бежать
pod install
- Снова откройте XCode и настройте конфигурации новой схемы на вновь созданные конфигурации.
Это оно!
Извините, что уже очень поздно, но я просто посмотрел на этот вопрос и нашел что-то, что сработало для меня. Я пошел в PROJECT->Build Settings и нашел раздел подписи кода. Помимо отладки, мой профиль распространения, который сказал Iphone Distribution: MY NAME
был выбран. Я вместо этого выбрал Iphone Developer: MY NAME
в раскрывающемся списке под IpodProfile (for bundle identifiers com.myName.myApp
который был профилем обеспечения для моего устройства. Надеюсь это поможет!
Боже, это может помочь в понимании. В моем случае мой профиль Team Provisioning Profile истекал (портал Provisioning Portal указал, что им управляет XCode), а также профиль тестирования устройства для приложения. (Я до сих пор не знаю почему, но на портале рядом с профилем команды была кнопка "Обновить", но она ничего не сделала, когда я щелкнул по ней.)
Итак, я удалил профили, срок действия которых истекает, затем в XCode перейдите в Органайзер (Command-Shift-2), в разделе "Профили библиотеки / инициализации" я удалил устаревшие. Затем нажмите "Обновить" внизу, введите мой Apple ID, и он обновил устаревшие.
Наконец, на своей цели я перешел к настройкам сборки, подписи кода и выбрал профиль обеспечения. Вуаля, теперь он собирается на моем устройстве.
Я не согласился на новое обновленное лицензионное соглашение от Apple.
Вкратце: войдите в свою учетную запись разработчика -> профиль -> обзор -> прочитайте соглашение или попросите адвоката прочитать его для вас -> согласиться (по собственному желанию) -> и снова нажмите профиль, чтобы проверить статус вашего профиля,
В моем сценарии действительный объект подписи кода не обнаруживался. Когда я следовал вышеописанной процедуре, это было видно, и я смог запустить приложение на устройстве и / или создать файл iPA без особых затруднений.
Только что получил тот же код ошибки. Кажется, есть разные вещи, которые вызывают это, и, следовательно, разные способы исправить это.
В моем случае у меня было два разных устройства с одинаковым именем (iPhone 4 и iPhone 4S). Изменение имени одного из них полностью исправило эту ошибку для меня...
Я только что это случилось с разработчиком в команде, которой я управляю.
Оказалось, что срок действия его сертификата разработчика истек, и после обновления я забыл добавить его сертификат в профиль обеспечения, которое использовало его приложение.
Я также провел несколько часов, борясь с этим. Исправление очень просто. Отредактируйте файл Entitlements.plist в корневом каталоге вашего проекта. Найдите строку, которая говорит <key>get-task-allow</key>
, Под ним должно быть <false/>
, Изменить это на <true/>
,
Я пытался добавить поддержку iCloud в свое существующее приложение, но обнаружил, что после добавления прав и настройки iCloud мое приложение больше не будет отлаживаться.
Я понял, что мой общий сертификат разработки для iOS имеет APPID, отличный от приложения, над которым я работал. Поэтому, чтобы исправить это, вместо использования моего общего сертификата я создал специальный сертификат разработки для этого APPID.
Я обновил свой профиль обеспечения в XCode, очистил приложение, отключил мое устройство, перезапустил XCOde и подключенное устройство и запустил, и теперь это работает!
Убедитесь, что ваше устройство включено в профиль обеспечения.