ios - 内部配置不起作用

标签 ios provisioning-profile in-house-distribution code-signing-entitlements

正如大多数人可能会同意的那样,iOS 应用程序配置是 iOS 开发人员必须处理的最令人困惑和最复杂的主题之一,我就是其中之一。 :-)

我们的一个团队需要开始对其应用进行 Beta 测试。这是一款企业应用程序,最终将在我们公司的应用程序目录 (InTune) 中发布,供数千名同事使用。据我所知,内部分发正是为了这个目的:部署到有限数量的受邀非开发人员测试人员,但无需获取他们的 UDID。为此,我设置了:

  • 内部配置配置文件,基于与团队开发配置文件完全相同的 AppId。
  • 成立 AppCenter Beta 测试组并邀请一些同事作为测试人员。
  • 在项目的构建定义中添加了“发布到 AppCenter”步骤,该步骤将 .IPA 文件部署到 AppCenter 中提到的测试组。

当构建运行时,一切正常,并且应用程序按预期部署到测试组。每个测试人员都可以安装该应用程序,并且一切看起来都很好。但是,当他们尝试安装该应用程序时,他们收到一条非常非描述性的错误消息,指出“无法安装该应用程序”。

我检查了设备日志,发现一条错误消息:“可执行文件使用无效的权利进行签名。”

我还通过下载内部配置文件(+签名证书)从 Visual Studio (Mac) 重新创建了失败的部署,并将构建/部署重新定位为“内部”。为了更好地衡量,我还手动选择了内部配置文件。

当我构建并部署到模拟器时一切正常,但当我部署到物理设备时,我在 Visual Studio (Mac) 中收到此错误:

ApplicationVerificationFailed:无法验证/private/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.zveLv9/extracted/{name-of-app}.app 的代码签名:0xe8008016(可执行文件使用无效的权利进行签名。) 错误 MT1006:无法在设备“{my-device-name}”上安装应用程序“{path-to-app}.app”:您的代码签名/配置配置文件配置不正确。您的当前配置文件可能不支持您的权利,或者您的设备不是当前配置文件的一部分。请检查 iOS 设备日志以了解详细信息(错误:0xe8008016)。

我的理解是,权利是通过 AppId 启用的,并通过代码中的权利请求(通过 Entitlements.plist 文件)。这导致 med 假设引用相同 AppId 的两个配置文件也会启用相同的权利。这是不正确的吗?显然,当我使用两个不同的配置文件编译完全相同的分支时,我从代码中请求相同的权利。

我怀疑我误解或忽略了某些事情......

最佳答案

问题原来是“推送通知”权利。

Entitlement.plist 文件包含一个“aps-environment”设置(在 Visual Studio Mac 中打开 Entitlements 文件并选择“Source”选项卡),该设置被设置为“development”。将发布版本部署到物理设备时,这会导致与配置文件的实际权利不匹配。

为了解决这个问题,我创建了第二个 Entitlement.plist 文件,将“aps-environment”设置更改为“生产”并将其保存为“Entitlement.prod.plist”(我还将原始文件重命名为“Entitlement.dev” .plist”为清楚起见)。

最后,我刚刚更改了捆绑设置(调试、发布等)以选择正确的权利文件,现在它可以按预期工作。

关于ios - 内部配置不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49878625/

相关文章:

ios - 没有图层的 PDF 文件

ios - 向 iOS 应用程序添加应用程序内购买权利会扰乱代码签名

ios - 导出内部 iOS 应用程序说证书 "Unknown",配置文件 "none"?

ios - 是否可以生成通配符 AppID 的企业/内部配置文件?

ios - 如何使用/测试子 NSProgress 实例的 NSProgress userInfo 更改

ios - Facebook 登录错误 - 未知错误构建 URL(com.facebook.sdk.core 错误 3)

iOS 和 XCode : Issue with certificates

ios - 我们可以在使用内部分发的 iPhone 应用程序中使用 paypal 或 amzon 结帐吗?

ios - fmdb 路径并从另一个 viewController 第二次使用 db

ios - 配置文件已过期