【问题标题】:XCode base SDK version in code代码中的 XCode 基础 SDK 版本
【发布时间】:2015-04-05 10:33:22
【问题描述】:

如何在代码中获取基础 SDK 的版本?我目前正在 XCode 6 中为 iOS 构建并使用基本 SDK 8.1 。我想知道 SDK 的值是否有任何定义,以便能够对其进行测试并允许使用不同的基础 SDK 进行构建。

【问题讨论】:

  • 如果我错了,请纠正我,但您必须使用最新的 SDK 提交到商店。为什么要更改基础 SDK?您想要不同的部署目标吗?
  • 不,我不是在谈论不同的部署目标。我被要求制作这个项目,以便它可以在 XCode 5 和 6 中构建,而无需人们安装新的基础 SDK。您知道获得该值的方法吗?
  • AFAK 在这种情况下,您需要安装 xcode 5 和 xcode 6,并使用 xcode-select 在两者之间切换。但是,您可能会遇到一些问题。我从未尝试过自己。

标签: ios xcode base-sdk target-sdk


【解决方案1】:

这可以使用 __IPHONE_OS_VERSION_MAX_ALLOWED(与基础 SDK 版本相同)来完成。这可以与 __IPHONE_8_0 进行比较,其中 8_0 是 iOS 版本。

例如,此时您可以使用 baseSDK 8.0 或 8.1。

【讨论】:

    【解决方案2】:

    您可以通过检查NSFoundationVersionNumber 的值来找出当前运行代码的 Foundation 框架的版本。

    如果您查看NSObjCRuntime.h,您会发现其中列出了各种版本号。

    关于针对不同版本的 SDK 进行构建;如果您在截止日期生效后不针对最新的 SDK 构建,Apple 将停止 App Store 上传 - 即现在提交的新应用必须针对 iOS 8 SDK 构建。

    但是,您可以做的是设置一个较低的 iOS 部署目标(您可以在项目的设置中找到)。这将允许您的应用程序在较旧的 iOS 版本上运行,但仍将基于最新的 SDK 构建。但请注意,您有责任确保在不首先确保当前环境支持它们的情况下不使用任何新 API,例如UITextField's selectable 财产。 如果你在 iOS 6 上运行时调用它,你的应用会崩溃。

    【讨论】:

    • 我找不到一些官方规则,如果不是针对最新的基础 SDK 构建,应用程序将无法获得批准。你能提供一个链接吗?
    • 在苹果圈内被广泛报道:developer.apple.com/news/?id=01192015a
    • 谢谢。我还没有真正进入“苹果圈”。我看到了那篇文章,但无法正确理解:(。我找到了一种使用 __IPHONE_OS_VERSION_MAX_ALLOWED
    猜你喜欢
    • 1970-01-01
    • 2011-06-17
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多