5

在编译时使用宏 __IPHONE_OS_VERSION_MIN_REQUIRED 确定应用程序的部署目标非常简单。查找应用程序在运行时运行的当前 iOS 版本也很简单。我试图在运行时找出应用程序的部署目标。我需要在已经编译的框架中使用它。是否有公共 API 方法来确定这一点?我找不到一个。

只是要清楚。我希望在运行时从我的框架中获取 iOS 应用程序的部署目标。不是编译时间。在我的框架中,我需要提醒框架的用户,如果他们的部署目标太远,某些功能将无法工作。

我在编译时很容易做到这一点,但我的框架已经编译,我不想要求框架的用户在他们的代码中添加宏,以便我的框架确定他们的部署目标。

4

2 回答 2

1

这是一个老问题,但我刚刚验证了答案,所以这里是:

在 iOS 上,您应该使用MinimumOSVersionInfo.plist 中的键来查找运行时支持的最低版本。

该源实际上是从Josh Caswell 发布的文档中链接的,关于.LSMinimumSystemVersion

请注意,它解释说作为开发人员的文档不应MinimumOSVersion自己设置该值,并且这是 Xcode 在构建期间为您自动填充的。这解释了本文档另一部分中相当神秘的“请勿使用”

在此处发布此密钥的描述,以供后代(2016 年 12 月),以防文档更改:

最低操作系统版本(字符串 - iOS)。当您构建 iOS 应用程序时,Xcode 使用项目的 iOS 部署目标设置来设置 MinimumOSVersion 键的值。不要在 Info.plist 文件中自己指定这个键;它是系统编写的密钥。当您将应用发布到 App Store 时,应用商店会根据此密钥指示您的应用可以在哪些 iOS 版本上运行。它相当于 macOS 中的 LSMinimumSystemVersion 键。

我通过在测试应用程序中打印出值来验证这一点(并将 Xcode 项目的部署目标更改为不同的值:

if let infoPlist = Bundle.main.infoDictionary {
  let minimumVersion = infoPlist["MinimumOSVersion"]
  if let minimumVersion = minimumVersion {
    print("Minimum version is \(minimumVersion)")
  }
}
于 2016-12-17T01:06:18.310 回答
0

我不明白为什么这段代码对你不起作用!

NSLog(@"Deployment target: %i", __IPHONE_OS_VERSION_MIN_REQUIRED);
于 2014-09-01T20:12:09.020 回答