【问题标题】:Do Xcode 8 Swift 3 apps run on iOS 7 successfully?Xcode 8 Swift 3 应用程序能否在 iOS 7 上成功运行?
【发布时间】:2016-11-19 17:56:40
【问题描述】:

Xcode 8 Swift 3 应用能否在 iOS 7 上成功运行?

我已尝试通过下面描述的一些测试来确定这一点,但能否请一位对 App Store 开发有更好理解的专家帮助解释成功和失败的原因,包括以下问题?


测试 1。

所以我打开了 Xcode 7.3.1 并使用 Swift 2.2 创建了一个应用程序。我打算将应用从 iOS 7 部署到 iOS 10。

我在 iOS 9.3 iPhone 模拟器上成功运行该应用程序,然后在实际的 iOS 7.1.2 iPhone 设备上也成功运行该应用程序。


测试 2。

接下来,我使用同一个项目并在 Xcode 8 Beta 2 中打开它。(系统提示我更新到 Swift 2.3 或 Swift 3。我更新到 Swift 2.3,然后再更新到 Swift 3。)

手动输入 iOS Target Deployment 为 7.0 后,我在 iOS 10 Beta 2 iPhone 模拟器上成功运行了该应用程序。但是,然后我尝试在实际的 iOS 7.1.2 iPhone 设备上运行该应用程序,但这次没有成功,显示以下错误。我用 Swift 2.3 和 Swift 3 重复测试,但出现相同的错误:

找不到设备支持文件

此 iPhone 4S 运行的是 iOS 7.1.2 (11D257),可能不是 此版本的 Xcode 支持。


测试 3。

接下来我尝试在获得应用程序存档(产品 > 存档...)后,通过 iTunes 将在 Xcode 8 Beta 2 中创建的 .ipa 应用程序文件直接安装到实际的 iOS 7.1.2 iPhone 设备上

.ipa 应用程序文件通过 iTunes 完成传输到 iOS 7.1.2 iPhone 设备后,我在实际设备上启动该应用程序,这次成功了。


结果。


问题:

  • 我可以从上表中的所有测试结果中得到什么?

  • 重要的是,当需要通过使用 Swift 3 在 Xcode 8 中创建的 App Store 分发应用程序时,是否可以安全地期望该应用程序通过 iTunes 成功安装在 iOS 7.1.2 iPhone 设备上,在 App Store 下载后是否仍兼容所有 iOS 7 设备?

  • Xcode 7.3.1 允许从 iOS 7 到 iOS 9 的设备在开发过程中进行测试和调试?

  • Xcode 8 不允许 iOS 7 设备在开发期间进行测试和调试,但仍允许将应用程序部署到 iOS 7 设备?

  • 将 Swift 2.3 作为 Swift 3 的中间步骤有何意义?

【问题讨论】:

  • 您应该尝试一次只回答一个问题。
  • Re Swift 2.3, What's New in Swift 说“如果你还没有准备好跳到 Swift 3,Swift 2.3 只是 Swift 2.2 可以与新的 SDK 一起工作,好的,我们将接受使用 Swift 3 和 2.3 向应用商店提交,但您应该知道 Xcode 中有一些非常关键的功能依赖于 Swift 3,例如 Playgrounds 和文档以及新功能,例如 Thread Sanitizer。"
  • 我希望这个问题本身可以被投票!感谢结果矩阵,真的很有帮助!

标签: ios swift xcode optimization


【解决方案1】:

我不愿从您的实证测试中得出太多结论。具体来说,我不会假设仅仅因为你让它在 iOS 7 上运行就保证它可以在 iOS 7 上运行。他们似乎只保证支持 iOS 8+。

顺便说一句,无论如何,Apple 通常建议只支持一个 iOS 版本。而且,as of May 9th,只有 5% 的设备运行 iOS 7 或更早版本(并且在 iOS 10 发布时可能会进一步减少)。

【讨论】:

  • 谢谢,罗伯。 “5% 的设备运行 iOS 7 或更早版本”仍然是很多设备。我倾向于将应用程序提供给希望运行该应用程序但尚未或无法更新到新 iOS 版本的尽可能多的用户。使用 Swift 3 并可能将 iOS7 抛在后面(尤其是在测试期间)是我尚未解决的决定。
  • 没关系。顺便说一句,这不是 5% 使用 iOS 7。这是 5% 使用 iOS 7或更早版本。这可能包括卡在早期 iOS 版本上的所有硬件(例如,我有几个 iPod touch 锁定到 iOS 6 及更早版本)。很少有设备被锁定到 iOS 7(例如 iPhone 4,但不是 3GS 或 4s)。归根结底,iOS 7 的市场份额很容易低于 5%。您必须权衡额外的开发成本和/或牺牲的应用程序功能。但这当然是你的决定。
  • 为了解决您必须从 Xcode 8 在 iOS 7 上调试应用程序的情况,在更新为转换为 Swift 2.3 后,我发现您可以部署到 iOS 7通过符号链接来自 Xcode 7.3.1 的旧支持文件的设备,例如:sudo ln -s /Applications/Xcode.7.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/7.* /Applications/Xcode。 app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/
【解决方案2】:

Xcode 8 Swift 3 应用能否在 iOS 7 上成功运行?

Swift 3 iOS compatibility。保证 iOS 8 支持,不确定 iOS 7。请参阅 this answer on Swift 2 和 iOS 7。最后一条评论指出,Apple 可能不希望您以 iOS 7 为目标。如果它不起作用,那么问题可能不是 Swift,而是 Xcode 说不。

我可以从上表中的所有测试结果中得到什么?

我不确定你的意思。

重要的是,当需要通过在 Xcode 8 和 Swift 3 中创建的 App Store 分发应用程序时,是否可以安全地期望通过 iTunes 在 iOS 7.1.2 iPhone 设备上成功安装的应用程序仍将在 App Store 下载时是否兼容所有 iOS 7 设备?

期望您尝试解决 Xcode 的任何事情可能永远不会安全。

Xcode 7.3.1 允许从 iOS 7 到 iOS 9 的设备在开发过程中进行测试和调试?

然后呢? Xcode 8 没有。 iOS 7 到 iOS 9 是两个版本,iOS 8 到 iOS 10 是两个版本。

将 Swift 2.3 作为 Swift 3 的中间步骤有何意义?

因为 Swift 3 是 Swift 2.2 的重大飞跃,所以如果您还没有准备好使用 Swift 3,它们会提供 Swift 2.3。但是,他们建议使用 Swift 3。Swift 3 还允许您访问一些新功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 2017-07-02
    相关资源
    最近更新 更多