对不同的 iOS 版本使用不同的 Info.plist 文件?

Posted

技术标签:

【中文标题】对不同的 iOS 版本使用不同的 Info.plist 文件?【英文标题】:Use different Info.plist file for different iOS versions? 【发布时间】:2016-03-25 00:04:09 【问题描述】:

我想使用 2 个不同的 Info.plist 文件 - 一个用于 ios 8,另一个用于 iOS 9。可以吗?

具体来说,我想在 iOS 8 上将NSExtensionAttributes 下的RequestsOpenAccess 的 plist 值设置为true,在iOS 上设置为false 9. 我该怎么做?

请注意:虽然要求存在相同答案的问题通常建议使用 plist 以外的机制来区分版本。我认为这不适用于我的情况(如果有人证明我错了,我会很高兴)。

【问题讨论】:

【参考方案1】:

不,这是不可能的。正如@Dschee 在他的评论中所说,您必须构建和分发两个单独的应用程序。

【讨论】:

谢谢。您能否提供一些参考资料(不一定是 Apple 文档)?如果不是,您的 SO 代表肯定会给您一些权限,但我们将不胜感激。 我会确认这个答案。一个打包的应用程序只能有一个 Info.plist。当用户下载您的应用程序时,他们将获得一个可以在您的应用程序支持的所有 iOS 版本上运行的应用程序。他们没有得到“iOS 8 版本”或“iOS 9”版本。他们得到一个版本。 我没有任何参考资料表明一个应用程序不能有 2 个不同的 info.plist 文件。这有点像要求确认海龟不会飞的参考。这是应用程序包的设计方式。【参考方案2】:

你呢将你的目标配置为两个之一(比如iOS 9),然后duplicate it,将第二个目标更改为使用iOS 8还有 change its Info.plist file path 在构建设置中?

这样您可以为两个单独的目标配置两个单独的.plist 文件。然后,您还需要部署两个单独的应用程序

这能解决您的问题吗?

【讨论】:

有趣的想法...如果我能以某种方式确保第一个目标在 iOS 8 上被忽略,第二个目标在 iOS 9 上被忽略,这对我有用。我认为这两个都不能完成仅使用部署目标项目属性。 我认为您必须创建两个单独的应用程序才能使其正常工作。如果这对您来说不是一个可行的选择,那么您可能就不走运了。 否 - 创建 2 个单独的应用程序不是一种选择......但是,创建 2 个目标并将一个目标限制为 iOS 8 并将另一个目标限制为 iOS 9 当然是一种选择(只是我不知道怎么做)。顺便提一句。你知道是否可以在运行时更改 plist 吗? 通过将最低 iOS 部署版本(在构建设置中)设置为 iOS 9,您可以有效地创建仅 iOS 9 的版本。但是,如果没有两个单独的应用程序,那将无济于事。关于在运行时更改 Info.plist,我认为这是不可能的。另请参阅***.com/a/12818184/3451975 这个解决方案有很多缺陷。主要的是“iOS 8”版本也可以安装在 iOS 9 和更高版本的设备上。您不能创建“仅限 iOS 8”应用程序。 iOS 不支持这种东西。

以上是关于对不同的 iOS 版本使用不同的 Info.plist 文件?的主要内容,如果未能解决你的问题,请参考以下文章

ios 为不同客户对同一应用程序的不同版本/定制发布/推出选项?

用不同的Xcode版本开发出的ios应用有差别吗?

iOS xcode 代码片段

iOS 7 中的自定义字体

如何对 AWS AppSync 架构进行版本控制

iOS xcode 安装插件