在 iPad 中检查 App 的配置文件

Posted

技术标签:

【中文标题】在 iPad 中检查 App 的配置文件【英文标题】:Check App's provisioning profile in iPad 【发布时间】:2018-06-07 07:52:16 【问题描述】:

我们正在测试一个场景,即使我们安装了使用旧配置文件签名的应用程序,iPad 似乎也一直采用新的配置文件。

我们的配置文件将于本月底到期。所以,我们更新了它,它是由 MDM 推动的。我们想在这样做之前对其进行测试,因此我们尝试复制该场景。我们生成了一个与旧 PP 签名的 iPa,通过 MDM 推送并下载它。现在,如果我们将 iPad 的日期更改为未来日期,它应该会崩溃,因为 PP 无效。但是,它仍然有效。

我们尝试通过 crashlytics 使用新的更新 PP 安装该应用程序,它按照我们的预期运行。现在,我们尝试通过 MDM 对其进行测试,即使您将其更改为未来日期,它也能正常工作。

我们怀疑 iPad 在某个地方存储了我们应用的新 PP,它取代了旧的 PP,导致应用一直在工作。

我的问题是,我们可以检查安装在 iPad 上的特定 App 的 PP 吗?如果我们删除应用程序,它不会从 iPad 中删除吗?我们可以从 iPad 手动删除 PP 吗?如果有,怎么做?

非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

为了详细说明@battlemonstr 的答案,配置文件在您打包时与.ipa 捆绑在一起(在embedded.mobileprovision 文件中),以便ios 设备可以在安装应用程序时在设备上安装PP。从 .ipa 安装后,嵌入式 PP 无关紧要 - 它只是安装在设备上的另一个 PP。当您第一次尝试运行应用程序时,iOS 将检查设备上是否存在允许应用程序运行的有效 PP。它可以是与应用程序一起安装的,但没有理由必须如此。换句话说,已安装的应用程序没有任何要求它使用在 .ipa 文件中与其捆绑的 PP。

当您删除应用程序时,它不会触及设备上安装的 PP。因此,如果您之前安装了某个版本的应用程序,并且它具有直到年底才过期的嵌入式 PP,那么使用已过期的 PP 安装新版本的应用程序不会阻止该应用程序运行,因为设备有一个对应用程序有效的 PP,直到年底才过期。

您可以在 Xcode 设备窗口中查看设备上的配置文件。右键单击设备并选择“显示配置文件...” 请注意,iOS 会尝试清理不时过期的旧配置文件,因此一些旧配置文件可能会消失。

【讨论】:

我检查了我的设备上安装的配置文件列表,但找不到与从 AppStore 下载的应用程序对应的配置文件。因此,这意味着从 AppStore 下载的 IPA 没有开发人员选择的配置文件。很有趣 是的,从 App Store 分发的应用程序在发布时由 Apple 重新签名,因为您不希望普通用户每次从应用程序下载应用程序时都必须信任开发人员来自新开发商的商店。配置文件是一种将开发和临时构建分发到有限数量的设备的机制。它引入了足够的摩擦力,以防止人们使用它来创建带有临时签名应用程序的自己的应用程序商店。 那么在向 AppStore 提交应用程序时,为什么要强制开发人员为 AppStore 创建和选择分发配置文件。在没有配置文件的情况下接受签名的应用程序不是更简单吗? 因为理论上,如果开发者保护他们的分发证书的私钥,它确保只有合法的开发者可以签署应用程序提交。如果他们的网站被黑客入侵并且有人窃取了存储在 developer.apple.com 上的证书,这是为了保护 Apple。黑客仍然没有私钥,因此他们无法向商店提交恶意版本的应用程序。 此外,配置文件确保开发人员必须有意识地选择应用程序要使用的权利。【参考方案2】:

配置文件是确认 Apple 允许在设备 Z 上运行来自应用开发者 Y 的应用 X 的文件。X 也可以是一组应用,但对于生产情况,它通常只是一个应用ID。 Z 也可以是一组设备,对于生产来说通常是这种情况。

将 PP 视为一种由 Apple 签名的证书,任何人都可以验证。

我们可以检查安装在 iPad 上的特定 App 的 PP 吗?

我认为 PP 的副本位于应用程序包中,因此如果您可以备份设备并以某种方式提取它,您可能会在那里找到它。 (另见How to find out what profile was used for building *.ipa file?)

如果我们删除应用程序,它不会从 iPad 上删除吗?

可能不会,至少并非总是如此。它们被安装到某个特殊系统的位置。

我们可以从 iPad 上手动删除 PP 吗?

“设置”应用有一个“常规 > 配置文件和设备管理”部分 它通常具有已安装配置文件的列表(请参阅https://apple.stackexchange.com/questions/221052/ios-9-2-my-general-profiles-and-device-management-is-gone)。我不知道它的确切规则,但在我的 2 台设备上,这个“配置文件和设备管理”部分是隐藏的。 有些人还提到,如果您使用 Xcode 将设备连接到 Mac,那么在“设备”工具/窗格中,您还可以获得已安装配置文件的列表(请参阅https://forums.developer.apple.com/thread/45086)。

根据您的描述,您的旧应用程序和新应用程序版本似乎都在工作,因为系统已经为它们(在新应用程序内)找到了一个有效的 PP,并保存了它。

【讨论】:

【参考方案3】:

您可以通过“Windows/设备和模拟器”查看为 iOS 设备上的应用安装了哪些 PP,并根据需要删除它们

然后右键单击您的设备,然后选择“显示配置文件...”

然后您可以根据需要从那里添加或删除。

确保在启动前关闭 iOS 设备上的应用程序(双击主页按钮并向上滑动您的应用程序),否则它将只使用内存中的一个,它将像您最新安装之前一样工作。

【讨论】:

以上是关于在 iPad 中检查 App 的配置文件的主要内容,如果未能解决你的问题,请参考以下文章

为啥我可以在没有任何配置文件的情况下从 App Store 运行应用程序?

iPad 中的无效配置文件问题

如何在 iPad/iPhone 上使用 ICC 配置文件?

无法在 iPad 上安装配置文件 - “无法安装配置文件...”

单点登录配置文件在带有 Safari 的 iPad 中无法正常工作

如何在 Laravel 5 中将自定义配置文件添加到 app/config?