Xamarin“可执行文件使用无效的许可证签名”

16

我想在我的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的新手,不知道该怎么做。已经有了Apple开发者账号,并创建了证书和配置文件。手机已经添加到设备列表中,也创建了一个标识符。

有人能帮助我吗?


你把设备添加到配置文件里了吗?(我想应该已经做了,我有很长一段时间没有碰它了) - Yitzchak
@Jason,我在哪里可以查看设备的日志? - j0k4b0
使用XCode查看日志。 - Jason
没有任何日志或错误信息。 - j0k4b0
@Jason - 不是XCode中的日志 - 那些是崩溃日志。他需要在应用程序尝试安装时查看实时日志流。但还是谢谢你的帮助 - 这激励我添加了一个答案来解释这个问题,以及其他可能的步骤。 - ToolmakerSteve
显示剩余2条评论
5个回答

28

如果在添加和设置"Entitlements.plist"(例如用于iCloud)之前,您的条款已经能够工作,则需要从您的配置中删除"Entitlements.plist"。

项目选项 > IOS Bundle签名 > 自定义授权(保持为空白)。


2
我浪费了几个小时来尝试解决问题,这篇文章帮了我很大的忙。我想知道为什么明明我从列表中选择了Entitlements.plist文件作为值,而且该文件也存在,但却无法正常工作,这似乎表明它已经被使用了。 - Tomislav Markovski
我也遇到了同样的问题,在安装应用程序时出现了错误,浪费了很多时间;这个解决方案使问题得到了解决。 - Vipin Krishna

21

更新:

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

通过较新的 Visual Studio for Mac 和 Xcode,在您启动应用程序(从 VS)的 Debug | iPhone 版本并将其发布到手机时,您可能已经在“部署到设备”选项卡中找到所需的所有信息。滚动到该选项卡的底部,查找消息:

ApplicationVerificationFailed: Failed to verify code signature of ... (The executable was signed with invalid entitlements.)

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

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


原回答:

(关于问题的评论)您需要的不是 Xcode 中的日志 - 那些是崩溃日志。这里需要的是在 Xamarin / View / Pads / “设备日志” 中。在安装应用程序时,消息会滚动显示。

在开始安装前,请打开设备日志面板 - 这是手机发送的动态信息的显示。从面板左上角的下拉列表中选择你的手机。(任何时候,点击面板右上方的橡皮擦图标,清除旧信息。)
如果有许多消息滚动通过,则点击带有蓝色圆圈内“i”的图标(工具提示为“显示消息”)(取消选中)以隐藏信息消息。确保红色圆圈X内“x”的图标(工具提示为“显示错误”)已被选中。
安装失败后,“选择所有/复制/粘贴”到文本编辑器中。搜索安装失败。紧接其前面应该有一些提供更多信息的行。具体而言,它将阐明以下两种可能的问题之一:1)*资格* 或 2)有关 *设备* 的信息。
我敢打赌是*资格*的问题。您需要确定是哪个资格导致了问题。您是否正在使用*推送通知*?*iCloud*吗?这些都可能是罪魁祸首。或者也许是与*隐私*相关的资格 - 确保您遵循最新iOS版本的当前说明:iOS 10、12、13 (IIRC) 中添加了新的隐私设置。
查看Entitlements.plist的源代码。将其保存在项目之外的某个地方。从一个空的Entitlements.plist开始。(如果你的项目文件夹中没有它,请添加一个空的文本文件来命名。)然后,你能够部署到手机吗?
当然,在这个空白的情况下,您将无法使用所需的资格,但是您应该能够启动您应用程序的第一个屏幕,或者至少有一个苹果对话框询问用户是否想允许..您需要的任何资格.

将所需的内容添加到Entitlements.plist,直到您无法部署。然后搜索特定问题-希望有解决方案。


另一种可能性是您的配置文件缺少您要求的权限。返回苹果开发者网站,在列出证书和配置文件的地方选择您使用的配置文件。在“启用服务”下,确保列出了您正在使用的服务。 (某些苹果功能不需要特定的权限;如果不确定,请创建一个新的配置文件,并仔细查看所有权限选项,以获取您使用的任何功能的详细信息)。


不错的提示!下次我会试试。我通过创建一个新项目并添加所有旧文件来解决它。之后它就正常工作了。我不知道为什么... - j0k4b0
1
非常感谢Pad/Device日志提示,真的帮了我很多:) - Gautam Jain
好的,这解决了我的问题。感谢分享。 - mjb
你所说的“启用服务”在哪里?我找到了编辑按钮,我已经启用了推送通知,但应用程序仍然无法工作。 - Gerry
@Gerry - 目前的步骤是:在苹果开发者网站上,在证书、标识符和配置文件中,选择左侧的配置文件。在列表中,选择要检查的配置文件。现在,在屏幕中间附近,有一个“启用功能”部分。您应该在那里看到“推送通知”。如果是这样,请搜索其他问题并查看答案。如果仍然卡住,请搜索“github xamarin ios push notification example”。下载示例项目,尝试使其正常工作。要坚持不懈;当没有任何反应时,很难让它正常工作,因此没有线索可以判断出错了什么。 - ToolmakerSteve

4

以下方法适用于我:

  1. 右键单击 IOS 项目并点击选项
  2. 如果你看到自定义权利下的 Info.plist,则将其更改为 Entitlements.plist
  3. 重新编译项目并测试

非常感谢!我不理解为什么 Info.plist 会在那里出现... - Tom el Safadi

0

当我尝试在iOS上注册远程通知时,遇到了问题。我在Xamarin.iOS项目的Entitlements.plist中设置了推送通知功能,但系统atically出现了以下错误:

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

我的entitlements已经正确设置,但问题是我使用了一个通配符dev provisioning profile,在Apple开发者门户中没有推送通知功能。 我不得不改用开发provisioning profil,在苹果开发者门户中设置推送通知功能,这解决了我的问题。


0
在我的情况下,这个应用在我的 iPhone 12 Pro 上运行得很好,但当我尝试在一台旧的 iPad Air 上运行它时,出现了这个错误。原来是因为我在 https://developer.apple.com/account/resources/identifiers/list 中有多个标识符,并且我已经使用了错误的标识符配置了 iPad。
一旦我在 https://developer.apple.com/account/resources/profiles/list 中为 iPad 创建了一个带有其他标识符的配置文件,错误就消失了。
所以总结一下:

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接