2009-07-02 5 views
70

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

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

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

ответ

52

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

http://developer.apple.com/iphone

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

Создание и загрузка Distribution Provisioning Профиль для одноранговых распространения

ссылке внизу.

Вот бит ключа:

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

  • В меню Файл выберите команду Создать файл -> iPhone OS -> Code Signing -> выплачиваемой. Назовите файл «Entitlements.plist» и нажмите «Готово». Это создаст копию файла прав по умолчанию в проекте.
  • Выберите новый файл Entitlments.plist и снимите флажок «получить доступ к заданию». Сохраните файл Entitlements.plist (в Xcode 4, get-task-allow называется «Может быть отлажен»)
  • Выберите Target и откройте инспектор настроек Build. В настройке сборки «Sign Signing Entitlements» введите имя файла нового файла Entitlements.plist, включая расширение. Нет необходимости указывать путь, если вы не поставили файл Entitlements.plist где-то, кроме верхнего уровня проекта.
  • Нажмите «Построить». (Примечание : Ваш двоичный файл должен содержать сплюснутое квадратное изображение ic на 57x57 пикселей. Этот значок отображается на главном экране iPhone или iPod touch.)
+1

Я просто собирался написать одно и то же, легко забыть, что вам нужно использовать get-tak для ad-hoc в дополнение к магазинам! –

+0

Большое спасибо! Решила мою проблему точно! – casademora

+0

Это не сработало для меня - это привело к той же ошибке «недействительных прав». Но, основываясь на некоторых комментариях ниже, я очистил все, а затем ПРОВЕРЯЛ (не снял флажок) «get-task-allow» и снова попытался - на этот раз это сработало. –

1

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

+1

Это странно, потому что у меня есть права на подписание кода в настройках Target в XCode 3.1. –

+0

Права доступа к кодам появятся, если вы сделаете базовое устройство iPhone SDK не симулятором в цель. –

14

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

+10

У меня есть * никогда *, чтобы это сделать. Для настройки конфигурации разработки просто убедитесь, что права на подпись кода пусты. –

+2

get-task-allow unchecked работал для меня ... какой подлый маленький ублюдок – WrightsCS

+0

Мне тоже пришлось проверять get-task-allow, чтобы получить разработку на моем устройстве. – memmons

4

Если вы когда-то попали в ситуацию, то для того, чтобы развернуть отладку (!), Требуется проверка «get-task-allow».) постройте на свой телефон, проверьте следующее:

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

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

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

+0

Это сработало для меня. После того, как я добавил Entitlements.plist для AdHoc, xcode скопировал это требование для моих целей отладки и выпуска (хотя я не ввел это на вкладке «Сборка»). После удаления из файла pbxproj вручную, сборка Debug работает снова. – thrusty

2

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

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

File> New File> Code Signing> Entitlement

Имя файла Entitlements.plist

Убедитесь, что он в группе ресурсов в Xcode.

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

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

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

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

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

34

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

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

+0

это решило мою проблему, спасибо – ilyashev

+0

решил мою проблему тоже. Thanx. – lagopixel

+0

решил мою проблему! таинственное сообщение .. –

0

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

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

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

0

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

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

0

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

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

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

0

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

-1

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

0

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

4

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

Так что просто пройти через Certificates, Identifiers & Profiles выбрать iOS Provisioning Profiles нажмите на редактирование затем выберите устройство

enter image description here

+1

Это решило мою проблему! –

0

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

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

1

В Xcode 5.1, если вы идете в Настройки -> Учетные записи -> Подробнее ...

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

0

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

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

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

1

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

  1. Open Project.xcodeproj> project.pbxproj
  2. Удалить все строки, подобные этим:
    1. PROVISIONING_PROFILE = ...
    2. "PROVISIONING_PROFILE[sdk=iphoneos*]" = ...
    3. "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ...
  3. Набор инициализации профилей & кода автографов для цели снова
+0

Это решило мою проблему. Это вызвало эту проблему именно «CODE_SIGN_IDENTITY = ...». Я понятия не имею, когда это было добавлено Xcode, или если я сделал это по ошибке сам, но какой беспорядок. По сравнению с другими IDE у меня было так много странных проблем с Xcode. Я стараюсь избегать этого и придерживаться AppCode. – Tobiaswk

0

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

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

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

исправить:

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

Вот и все!

Смежные вопросы