【问题标题】:Xamarin "The executable was signed with invalid entitlements"Xamarin“可执行文件已使用无效权利签名”
【发布时间】:2017-08-11 22:19:30
【问题描述】:

我想在我的 iPhone 上测试我创建的 iOS 应用。构建成功,但是当 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 的新手,不知道该怎么做。一个苹果开发者帐户可用,并且创建了证书和配置文件。手机被添加到设备列表中并创建了一个标识符。

谁能帮帮我?

【问题讨论】:

  • 您是否将设备添加到配置文件中? (我觉得应该可以了,好久没碰了)
  • 您是否按照建议检查了 iOS 设备日志?
  • @Yitschak 是的,该设备已添加到配置文件中......
  • @Jason 我在哪里可以查看设备的日志?
  • 使用XCode查看日志

标签: ios iphone xamarin.ios provisioning-profile entitlements


【解决方案1】:

更新:

首先,确保 Xcode 和 Visual Studio for Mac 都更新到最新版本。如果您更新 Xcode,请打开它。登录。如果它要求“安装其他必需的组件?”,请选择“安装”。然后重新打开更新的VS。

使用较新的 Visual Studio for Mac 和 Xcode,您可能会在启动到手机(从 VS)时出现的“部署到设备”选项卡中获得所需的所有信息iPhone 版本的应用程序。滚动到该选项卡的底部,查找如下消息:

ApplicationVerificationFailed:无法验证...的代码签名(可执行文件的签名无效。)

...您的代码签名/配置文件配置不正确。可能您的当前配置文件不支持您的权利,或者您的设备不是当前配置文件的一部分。详情请查看 iOS 设备日志(错误:0xe8008016)。

在某些情况下,以下说明不会为您提供比上述更有用的详细信息。例如,我没有看到(即使在 iOS 设备日志中)哪个 权利失败了;我必须通过比较我的应用程序在info.plist 中签入的权利与我正在使用的证书来解决上述问题。如果有疑问,请尝试取消选中 info.plist 中的所有权利。再次部署。 (显然,任何需要权利的功能都无法工作,但至少您可以验证您能够在没有该错误消息的情况下进行部署。)


原答案:

(关于问题的 cmets)您需要的不是 Xcode 中的日志 - 这些是 crash 日志。这里需要的是 Xamarin / View / Pads / "Device Log"安装应用时,消息会滚动

在开始安装之前打开设备日志板 - 这是手机消息的动态显示。从垫左上角的下拉列表中选择您的手机。 (随时点击pad右上方的橡皮擦图标,清除旧信息。)

如果有许多消息正在滚动,则单击 i-inside-blue-circle 图标(工具提示“显示消息”)(取消选择它)以隐藏 Info 消息。确保选中 x-in-red-circle 图标(工具提示“显示错误”)。

安装失败后,“全选/复制/粘贴”进入文本编辑器。搜索安装失败。紧接在它之前应该是一些提供更多信息的行。具体来说,它将阐明这两种可能性中的哪一种是问题:1) entitlements 或 2) 关于 device 的一些东西。

我敢打赌它的权利。您需要找出导致问题的权利。你在使用推送通知吗? iCloud?这些很可能是罪魁祸首。或者可能是与 隐私 相关的权利之一 - 确保您遵循最新 iOS 版本的当前说明:在 iOS 10、12、13 (IIRC) 中添加了新的隐私设置。

查看Entitlements.plist的源代码。将其副本保存在远离您的项目的某个地方。以空白(空)Entitlements.plist 开头。 [添加一个具有该名称的空文本文件,如果您的项目文件夹中没有它。]然后您可以部署到手机吗?

当然,您将无法使用所需的权利,虽然这是空白,但您应该能够启动应用的第一个屏幕,或者至少一些Apple 对话框询问用户是否允许..您需要的任何权利..

然后添加到Entitlements.plist,直到无法部署为止。然后谷歌解决这个特定问题 - 希望有一个解决方案。


另一种可能是您的配置文件缺少您要求的权利。返回 Apple 开发者网站,其中列出了您的证书和配置文件。选择省。您正在使用的个人资料。在“启用的服务”下,确保它列出了您正在使用的服务。
(某些 Apple 功能不需要特定的权利;如有疑问,请创建一个新的配置文件,并仔细查看所有权利选项,以了解您正在使用的任何功能。)

【讨论】:

  • 不错的提示!下次我会试试的。我通过创建一个新项目并添加所有旧文件来修复它。之后它工作正常。我不知道为什么......
  • 非常感谢 Pad/Device Log 提示真的很有帮助 :)
  • 好的,这解决了我的问题。感谢分享。
  • 您所说的“启用服务”在哪里?我找到了编辑按钮,我启用了推送通知,但应用仍然无法运行
  • @Gerry - 目前的步骤是:在 Apple Developer 网站上,在证书、标识符和配置文件中,在左侧选择配置文件。在列表中,选择要检查的配置文件。现在,靠近屏幕中间的是“启用的功能”部分。您应该在那里看到“推送通知”。如果是这样,请搜索其他问题并查看答案。如果仍然卡住,请谷歌“github xamarin ios 推送通知示例”。下载一个示例项目,尝试让它工作。坚持不懈;当什么都没发生时很难让它工作,所以不知道出了什么问题。
【解决方案2】:

为我解决这个问题:

  1. 右键点击IOS项目,点击选项
  2. 如果您在 Custom Entitlements: Info.plist 下看到,则将其更改为 Entitlements.plist
  3. 再次编译项目并进行测试

【讨论】:

  • 非常感谢!!我不明白 Info.plist 是如何进入其中的......
【解决方案3】:

如果您的规定在您添加和设置“Entitlements.plist”(例如对于 Icloud)之前有效,则:

您需要从配置中删除“Entitlements.plist”。

项目选项 > IOS 捆绑签名 > 自定义权利(保持空白)。

【讨论】:

  • 我浪费了几个小时试图弄清楚,这很有帮助。我想知道为什么 Entitlements.plist 不能作为一个值,当我显然从列表中选择它并且文件在那里时,表明它已经被使用了。
  • 我也遇到了同样的问题,安装应用时出错,浪费了很多时间;这个解决方案做得对
【解决方案4】:

我在尝试注册 iOS 远程通知时遇到了这个问题。我在 Xamarin.iOS 项目的 Entitlements.plist 中设置了推送通知功能,但系统性地得到了这个错误:

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.)

我的权利设置正确,但问题是我使用的是通配符开发配置文件,它没有 Apple 开发人员门户中的推送通知功能。 我不得不更改为开发配置文件,我在苹果开发者门户中设置了推送通知功能,这解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多