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


113

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

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

Он отлично работал с Xcode 4.x. Кто-нибудь знает, как избавиться от ошибки?

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


У меня есть Xcode 8.3.3, и этот ответ действительно
— Nuno MSB

Ответы:


102

Я боролся с этой проблемой в течение часа и наконец нашел решение. Оказалось, что команда разработчиков была разной в ProjectTarget и ProjectTests.


13
Спасибо! Это просто помогло мне и сэкономило много времени!
— Marky

Вот Это Да! Спасибо @Krish
— Kqtr

вы, сэр, только что спасли мой четверг, не могу вас отблагодарить
— Самер Мурад

где я могу найти ProjectTarget и ProjectTests?
— Пабло

ах! нашел это! дней на это, и это была только эта установка! ??
— Пабло

77

У меня сработал перезапуск Xcode .


15
Итак, Xcode принял универсальное исправление Microsoft. ;) Для записи, это все еще проблема, и перезагрузка все еще исправлена ​​(я использую v7.3.1).
— Эрик Сойк,

3
еще +1, столкнитесь с этой проблемой снова, затем погуглите, я здесь приземлился.
— jayellos

После нескольких часов проверки каждой детали ... это сработало в XCode 8
— Матей Укмар

Есть ли у кого-нибудь твердое решение этой проблемы !!!! Все эти решения выглядят как некие ситуационные обходы. Пожалуйста помоги.
— Макс

На самом деле у меня сработало одно и то же
— Тахмид Рахман

35

Я обнаружил проблему. Приложение, которое я создал на developer.apple.com, не включает аудио между приложениями. Для файла plist с правами проекта в Xcode установлено значение «ДА» для звука между приложениями (по умолчанию). Как только я изменил настройку конфигурации своего приложения на сайте developer.apple.com, чтобы включить аудио между приложениями. Затем мое приложение запускается на моих устройствах. Я предполагаю, что это новое правило Apple, позволяющее согласовать настройки вашего приложения как на сайте developer.apple.com, так и в настройках проекта xcode.


10
Я переключил функцию Inter-App Audio в положение ON, а затем снова в OFF, и таким образом приложение работало ... WT *?
— Ферран Мэйлинч

Вау, невероятно. По-прежнему применимое исправление, хотя для меня это была возможность групп приложений.
— Келлер

Тоже самое! Это очень странно. Я думаю, вы можете переключить любую возможность, чтобы исправить это.
— Андре Саймон

Пробовал все, все еще сталкиваясь с той же проблемой !, любые предложения
— Макс

24

Я смог исправить это, включив / выключив право «Game Center» в Xcode 5 :-)


5
СПАСИБО! Вы не представляете, как я был расстроен все утро, пока не наткнулся на ваш ответ. Определенно исправил это для меня.
— Гаспер Коленц 08

1
Имейте в виду, что Xcode сгенерирует для вас профиль обеспечения и аннулирует ваш настраиваемый профиль создания обеспечения.
— Van Du Tran

@VanDuTran нет, не будет.
— Nik

Это произошло в приложении Xamarin, а также в Visual Studio для Mac. Так что он не изолирован только от Xcode.
— Дэн Больё

19

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


Очень хороший момент, это происходит, когда вы меняете свою команду в основной цели, но не в тестовой цели. Смена команды в тестовой цели на команду в основной цели решила проблему для меня.
— дан

Спасибо!! Это то, что окончательно исправило для меня. Права были отвлекающим маневром.
— Reid

19

Для XCode 10 может потребоваться использовать устаревшую систему сборки

Изменения можно внести в настройках файла / проекта. ОШИБКА ITMS-90174: «Отсутствует профиль обеспечения - приложения iOS должны содержать профиль обеспечения в файле с именем embedded.mobileprovision».

Кордова / ионное сообщение: https://github.com/apache/cordova-ios/issues/407


1
хотел бы добавить для пользователей Cordova / Ionic, что вам также может потребоваться изменить сгенерированный проект Xcode для использования устаревшего режима, выбрав «Файл> Параметры проекта / рабочей области» и изменить его на систему устаревшей сборки », как подробно описано здесь: stackoverflow.com/a / 52605878/2503520
— Vyrnach

12

Решение для последней версии Xcode :

Сначала вы должны проверить, что включено в вашем Центре участников для вашего конкретного AppID :

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

Затем в соответствующей цели в Xcode , вы должны быть включена той же возможность: В этом случае: App Group, Game Center, In-App Purchase. Все они должны быть включены в вашей цели в Xcode.

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

Однако для режима DEBUG это не имеет значения :

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

это очень важно для вашего режима RELEASE : введите описание изображения здесь

Обратите внимание, что Game Centerи In-App Purchaseвключены по умолчанию в Центре участников, но отключены в цели Xcode.


3
Можно ли удалить игровой центр и встроенную покупку с сайта developer.apple.com?
— Noitidart

12

Я думаю, что ваша проблема заключается в профиле, который вы использовали xCode4.6, а теперь вы используете xCode5.

Вам необходимо обновить сертификаты / профили обеспечения через XCode> Preferences> Accounts

XCode> Настройки> Учетные записи> Щелкните свою УЧЕТНУЮ ЗАПИСЬ ДЛЯ РАЗРАБОТЧИКА> кнопку «Просмотреть подробности» (внизу справа)> появится экран «Подписание идентификаторов / PPs»> нажмите «Обновить».

Затем снова выберите в настройках сборки правильный профиль, очистите и соберите свой проект.

Надеюсь, это тебе поможет.


1
Спасибо за вашу помощь. Я обнаружил проблему. Приложение, которое я создал на developer.apple.com, не включает аудио между приложениями. Для файла plist с правами проекта в Xcode установлено значение «ДА» для звука между приложениями (по умолчанию). Как только я изменил настройку конфигурации своего приложения на сайте developer.apple.com, чтобы включить аудио между приложениями. Затем мое приложение запускается на моих устройствах. Я предполагаю, что это новое правило Apple, позволяющее согласовать настройки вашего приложения как на сайте developer.apple.com, так и в настройках проекта xcode.
— Эмми

6

Мне пришлось сопоставить возможности приложения в Xcode5 под

Capabilities -> 
In-App purchase -> ON
Game Center -> ON

с этим в профиле провизирования.


Также это решило ошибку ответа APNs «Недействительный токен».
— hiroshi

добавление права на игровой центр и его удаление тоже сработало для меня. Понятия не имею почему.
— Рукшан Марапана

5

xcode 6.1 (образец HealthKit)

Я получал эту ошибку из-за интеграции HealthKit: я включил In-App Purchase, Game Center и Healkit решил мою проблему .. То же самое, что я включил в профиле Provision.

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

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


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

5

(Xcode 6.1)

Проблема для меня была в моих настройках сборки; При попытке развертывания на устройстве у меня был установлен профиль Provisioning Profile на рабочий профиль App Store. Я переключил его на «Автоматический», и это решило мою проблему. Вы также можете установить его в свой профиль Dev Provision Profile.

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


Спасибо! Переключение на «Автоматический» сделало это для меня
— Emastmagy MastMagy

Странно, что переход на автоматический режим исправил это, но у меня это сработало. У меня был профиль подготовки com.mycompany. *, И я получал эту ошибку. На вкладке «Возможности» был красный FixMe, но после исправления этой проблемы я все еще получал ошибку неверных прав. Затем я попытался изменить свой профиль подготовки с com.mycompany. * На автоматический, и это устранило проблему. Я дважды проверил, что bundleID - com.mycompany.blabla, так что, похоже, это какая-то ошибка Xcode. Я использую Xcode 6.3.2.
— Джим Рэндж

5

У меня была аналогичная проблема, когда я обновился до Xcode 10, я решил проблему, перейдя в File> Project Setting, в опции «New Build System» выберите «Legacy Build System». Это помогло мне, надеюсь, это кому-то поможет.


4

Мне показалось, что простая очистка и сборка все исправили.


Для меня это тоже было исправлением.
— Enijar

4

Если эта проблема такая же, как у меня.Возможно, вы забыли установить команду в unittest в своем целевом проекте, попробуйте сделать эту картинку

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


3

Я решаю эту проблему, удаляя все "PROVISIONING_PROFILE=..."и "PROVISIONING_PROFILE[sdk=iphoneos*]" = ...в project.pbxproj, перезапускаю Xcode и снова устанавливаю профили подготовки для цели.


3

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


Перезапуск / очистка не помогли мне, но потом я понял, что не добавил свой новый тестовый телефон в профиль Ad Hoc, который я использовал для сборки. Я восстановил / загрузил обновленный профиль, и ошибка исчезла. Примечание. После этого вы можете получить ошибку «безопасности», что означает, что устройству требуется, чтобы вы авторизовали приложение, просто нажмите приложение на устройстве, чтобы активировать предупреждение «доверять разработчику».
— SafeFastExpressive

3

В моем случае устройство не было добавлено. Поэтому мне пришлось добавить устройство и создать новый профиль обеспечения.


3

Еще одна вещь, которую нужно проверить - убедитесь, что вы выбрали правильные объекты в обоих

Цели -> Ваша цель -> Настройки сборки -> Подписание

и

Проект -> Ваш проект -> Настройки сборки -> Объект подписи кода

Я получил это сообщение, когда у меня был выбран полный профиль разработчика в одном и другой (не являющийся разработчиком) Apple ID, выбранный в другом, даже если в приложении не запрашивались права.


2

Кажется, это небольшая ошибка внутри Xcode. Все равно попробуйте заархивировать , даже если есть проблема с entitlements. Если с вашими правами все в порядке, он будет загружен без проблем. Apple примет его, и ваше приложение будет опубликовано в AppStore.

Я сделал это, и это сработало :)



1

У меня была такая же проблема в XCode 5. Это все равно помогло мне.

XCode > Preferences > Location tab > DerivedData

Нажмите небольшую стрелку влево, чтобы открыть DerivedData в Finder. Переместите в корзину вашего проекта и перестройте.

Скриншот


Я полагаю, что должно быть правильное объяснение того, почему удаление производных данных решит проблему.
— Kavita

1

Была проблема. Решение: перейдите к правильной цели -> возможности -> у меня возникла проблема с «Покупкой в ​​приложении» и кнопкой, чтобы исправить это. Исправлена ​​проблема с отключенной работой.


1

В моем случае: мне нужно включить Inter-App Audio в

Capabilities -> Inter-App Audio

Думаю, поскольку я использую уведомление Parse.com, ему нужна ссылка на AudioToolbox.framework


1

Включение возможностей -> Inter-App Audio также устранило эту проблему для меня. Я также пытаюсь отправлять push-уведомления через синтаксический анализ


1

Ответы здесь кажутся немного неадекватными, поэтому я добавляю свои два цента:

Реальное решение заключается в том, что обычно существует несоответствие между тем, что хранится в вашем профиле обеспечения (проверьте на developer.apple.com -> members -> Certificates -> сертификат, который вы используете [обязательно проверьте, есть ли dev / production) и что включено в вашем приложении (дважды щелкните имя проекта), в горизонтальном меню выберите «Возможности» (рядом с «Общие»).

Если вы недавно изменили один из них, обязательно обновите свои сертификаты в XCode -> Preferences -> Accounts -> Details -> Refresh Icon и перезапустите XCode.


1

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


1

В моем случае мне пришлось принять лицензионное соглашение разработчика Apple.

Войдите в учетную запись разработчика Apple и просмотрите сообщение, подобное приведенному ниже.

«Лицензионное соглашение программы Apple Developer было обновлено. Для доступа к определенным ресурсам членства **** необходимо принять последнее лицензионное соглашение до 28 июня 2016 года».

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

Надеюсь, это сэкономит чье-то драгоценное время.


1

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

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

Хотя все файлы автоматически обрабатываются программой Apple, они неверны.

Если вы загрузите файл подготовки с портала Apple и откроете его (вы можете открыть его, потому что это просто файл plist, подписанный вашим сертификатом, поэтому он доступен для чтения текстовым редактором) и сравните его с вашим файлом прав (автоматически сгенерированным Xcode и находящимся в файлах проекта) (так что это снова файл plist XML, доступный для чтения текстовым редактором.) Тогда вы увидите разницу.

В моем случае это было право на Game Center. Он был отображен на портале как отмеченный (отмечен по умолчанию), но на самом деле это право не было включено в файл мобильной подготовки. Итак, нужно было удалить его из файла Entitlements.

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


1

Для тех, у кого такая же проблема с автоматической настройкой профиля в целевых параметрах сборки:

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

В моем случае мне пришлось временно использовать производственные контейнеры iCloud с отладочными сборками. Для этого я вставил

<key>com.apple.developer.icloud-container-environment</key>
<string>Production</string>  

в файле прав, и это сработало!
Чтобы напомнить мне, что позже мне пришлось удалить эти строки, я добавил просто следующий комментарий:

<key>TODO</key>
<string>The entry below must be out commented or deleted to use the iCloud development environment.</string>  

И это нарушило переписку и породило ошибку .


Где находится файл прав?
— Noitidart

Он находится в папке вашего проекта и называется yourProject.entitlements. Вы можете найти его в навигаторе проекта Xcode.
— Рейнхард Мэннер

Спасибо. Кажется, он не был создан, пока я не проверил, а затем не снял флажок "Inter app audio". У меня есть игровой центр и покупки приложений на сайте developer.apple.com, но я им не пользуюсь, это настройки по умолчанию. Поэтому я отметил свои возможности в xcode как «включено», но независимо от того, что я продолжаю получать, «Исполняемый файл был подписан с недопустимыми правами». ошибка. :(
— Noitidart

1

Я использую push-уведомление в своем приложении, и после завершения разработки я попытался протестировать push-уведомление для конфигурации выпуска . В то время я получил эту ошибку.

Я использую производство Provisioning Профиль для запуска для выпуска . Так что я смог решить эту ошибку, используя профиль Adhoc Provisioning Profile.

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