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

15

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目标部署设置为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设备上(先获取应用程序的归档文件(Product > Archive …))

当.ipa应用程序文件通过iTunes成功传输到iOS 7.1.2 iPhone设备后,我再次启动该应用程序,这次运行成功了。


结果。 在此输入图片描述


问题:

  • 根据上表的所有测试结果,我可以得到什么结论?

  • 重要的是,在通过使用Xcode 8和Swift 3创建的应用商店分发应用程序时,可以安全地期望已经成功通过iTunes安装在iOS 7.1.2 iPhone设备上的应用程序在从应用商店下载时仍然兼容所有iOS 7设备吗?

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

  • Xcode 8在开发过程中不允许测试和调试iOS 7设备,但仍允许将应用程序部署到iOS 7设备上吗?

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


1
你应该尽量限制自己一次只提一个问题。 - Rob
1
在关于Swift 2.3的Swift有什么新特性中提到:“如果你还没有准备好转向Swift 3,那么Swift 2.3就是Swift 2.2,可以与新的SDK一起使用。我们将接受提交到应用商店的Swift 3和2.3版本,但你应该知道,Xcode中有一些非常关键的功能依赖于Swift 3,例如Playgrounds和文档以及像线程Sanitizer这样的新功能。” - Rob
1
希望问题本身也能被点赞!感谢结果矩阵,真的很有帮助! - Shaikh Sonny Aman
2个回答

10

我认为您进行实验测试后不应该得出太多结论。特别是,请不要仅仅因为您已经在iOS 7上运行成功就假定它能保证在所有iOS 7版本上都能正常工作。似乎他们只承诺支持iOS 8及以上版本。

此外,Apple通常建议只支持一个iOS版本的回退。而且,截至5月9日,只有5%的设备运行iOS 7或更早版本(并且随着iOS 10发布的时间推移,这个比例可能会进一步降低)。


2
谢谢,Rob。仍有5%的设备运行iOS 7或更早版本,这是相当多的设备。我倾向于让尽可能多的用户使用该应用程序,即使他们没有或无法更新到新的iOS版本。决定是否转向Swift 3并可能放弃iOS7(特别是在测试期间)是我尚未解决的问题。 - user4806509
3
好的。顺便说一下,那不是使用iOS 7的5%。那是使用iOS 7或更早版本的5%。这可能包括所有被困在早期iOS版本上的硬件(例如,我有几个iPod touch被锁定在6及更早版本的iOS上)。只有很少的设备被锁定在iOS 7上(例如iPhone 4,但不包括3GS或4s)。总之,iOS 7的市场份额很可能远少于5%。您必须权衡此与额外的开发成本和/或牺牲的应用程序功能。但当然,这是您的决定。 - Rob
为了解决在使用Xcode 8进行转换到Swift 2.3后必须在iOS 7上调试应用程序的情况,我发现可以通过在Xcode 7.3.1中建立旧支持文件的符号链接来部署到iOS 7设备,例如: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/ - jc1001

2
Xcode 8 Swift 3的应用程序能在iOS 7上成功运行吗?请参见Swift 3 iOS compatibility。保证支持iOS 8,但不确定是否支持iOS 7。请参见Swift 2和iOS 7的this answer。最后一条评论指出,苹果可能不希望你针对iOS 7进行开发。如果无法正常工作,问题可能不是Swift,而是Xcode说“不”的问题。
关于表格中所有测试结果,您想要了解什么?
重要的是,当通过使用Xcode 8和Swift 3创建的App Store分发应用程序时,可以安全地期望在iOS 7设备上下载的应用程序(通过iTunes成功安装)仍然兼容所有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还允许您访问一些新功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接