对不同的 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 文件?的主要内容,如果未能解决你的问题,请参考以下文章