Xamarin "Исполняемый файл был подписан с недействительными правами"
Я хочу протестировать мое созданное приложение для iOS на моем iPhone. Сборка прошла успешно, но в то время как xamarin studio пытается передать файл через usb на мой iPhone, я получил следующую ошибку:
VerifyingApplication: 70%
PercentComplete: 40
Status: VerifyingApplication
ApplicationVerificationFailed: Failed to verify code signature of /private/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.yNZx88/extracted/<APPName>.app : 0xe8008016 (The executable was signed with invalid entitlements.)
error MT1006: Could not install the application '/Users/<NAME>/Projects/<APPName>/<APPName>/bin/iPhone/Debug/device-builds/iphone8.2-10.2.1/<APPNamr>.app' on the device '<DEVICEName>': Your code signing/provisioning profiles are not correctly configured. Probably you have an entitlement not supported by your current provisioning profile, or your device is not part of the current provisioning profile. Please check the iOS Device Log for details (error: 0xe8008016).
--- inner exception
Xamarin.Installation.FailedInstallException: Your code signing/provisioning profiles are not correctly configured. Probably you have an entitlement not supported by your current provisioning profile, or your device is not part of the current provisioning profile. Please check the iOS Device Log for details (error: 0xe8008016)
[...]
Application could not be uploaded to the device.
Я новичок в xamarin и не знаю, что делать. Доступна учетная запись разработчика Apple, а также создан сертификат и профиль обеспечения. Телефон добавляется в список устройств и создается его идентификатор.
Может кто-нибудь мне помочь?
5 ответов
НЕ журналы в Xcode - это журналы аварий. Что здесь нужно, так это в Xamarin / View / Pad "Device Log". При установке приложения сообщения будут прокручиваться.
После сбоя установки "выбрать все / скопировать / вставить" в текстовом редакторе. Найдите ошибку установки. Непосредственно перед этим должно быть несколько строк, которые дают больше информации. В частности, он прояснит, какая из этих двух возможностей является проблемой: 1) права или 2) что-то об устройстве.
Ставлю свои права. Вам нужно будет определить, какое право вызывает проблему. Вы используете Push-уведомления? iCloud? Это вероятные виновники. Или, возможно, одно из прав, связанных с конфиденциальностью - убедитесь, что вы следуете текущим инструкциям для iOS 10, который имеет более строгие настройки конфиденциальности, чем более ранние версии iOS.
Посмотрите на исходный код Entitlements.plist
, Сохраните копию этого где-то далеко от вашего проекта. Начните с пробела (пусто) Entitlements.plist
, [Добавьте пустой текстовый файл с этим именем, если у вас его нет в папке проекта.] Можете ли вы затем развернуть его на телефон?
Конечно, вы не сможете использовать необходимые вам права, хотя это поле пустое, но вы должны иметь возможность открыть первый экран вашего приложения или хотя бы какой-нибудь диалог Apple, спрашивающий пользователя, хотят ли они разрешить.. какие бы права вы ни нуждались..
Затем добавьте к Entitlements.plist
пока вы не можете развернуть. Тогда Google для этой конкретной проблемы - надеюсь, что есть решение там.
Другая возможность заключается в том, что в вашем профиле обеспечения отсутствуют права, которые вы запрашиваете. Вернитесь на веб-сайт разработчика Apple, где перечислены ваши сертификаты и профили обеспечения. Выберите пров. профиль, который вы используете. В разделе "Включенные службы" убедитесь, что в нем перечислены используемые вами службы.
(Некоторые функции Apple не требуют специальных разрешений; в случае сомнений создайте новый профиль обеспечения и внимательно изучите все варианты разрешений для любой используемой вами функции.)
Если ваши положения работали до того, как вы добавили и установили свой "Entitlements.plist" (например, для Icloud), тогда:
Вам необходимо удалить "Entitlements.plist" из вашей конфигурации.
Параметр проекта> Подпись пакета IOS> Пользовательские права (не заполняйте).
Это исправление для меня:
- Щелкните правой кнопкой мыши по проекту IOS и выберите "Параметры".
- Если вы видите в разделе Пользовательские права: Info.plist, затем измените его на Entitlements.plist
- Снова скомпилируйте проект и протестируйте его
У меня возникла эта проблема, когда я пытался зарегистрироваться для получения удаленных уведомлений iOS. Я установил возможности push-уведомлений в моем Entitlements.plist в проекте Xamarin.iOS, но систематически получал эту ошибку:
ApplicationVerificationFailed: Failed to verify code signature of /private/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.vvvwk7/extracted/company.MyApp.Ios.app : 0xe8008016 (The executable was signed with invalid entitlements.)
Мои права были установлены правильно, но проблема заключалась в том, что я использовал профиль подготовки Wilcard Dev, у которого не было возможностей push-уведомлений на портале разработчика Apple. Мне пришлось перейти на профиль обеспечения разработки, в котором я установил возможности push-уведомлений на портале разработчика Apple, и это решило мою проблему.
В моем случае приложение работало нормально на моем iPhone 12 Pro, но когда я попытался запустить его на старом iPad Air, я получил эту ошибку. Оказывается, у меня более одного идентификатора в , и я неправильно настроил iPad.
Как только я создал профиль для iPad в с другим идентификатором, ошибка исчезла.
Итак, чтобы подвести итог
- убедитесь, что идентификатор в https://developer.apple.com/account/resources/identifiers/listhttps://developer.apple.com/account/resources/identifiers/list настроен для приложения, которое вы используете. Идентификатор приложения должен соответствовать идентификатору пакета в Info.plist.
- убедитесь, что ваше устройство зарегистрировано в https://developer.apple.com/account/resources/devices/list . Ваше устройство должно быть добавлено сюда автоматически при подключении к Mac с запущенным Xcode, но его можно добавить вручную, скопировав UDID из Xcode Window/Devices and Simulators.
- убедитесь, что в https://developer.apple.com/account/resources/profiles/listhttps://developer.apple.com/account/resources/profiles/list есть профиль , который связывает идентификатор и устройство сверху