iPhone 8模拟器的意义是什么?

3

在模拟器特性方面,除了设备ID之外,iPhone 7和iPhone 8模拟器有什么不同?为什么苹果在Xcode中都包含了它们?

2个回答

4
在这里你不太可能得到任何关于“为什么苹果……”的权威回答 - 作为一个公司实体,苹果不会在SO上发布信息。
iPhone 6、6s和7之间,以及iPad Pro 12.9英寸两代硬件之间,以及各种iPhone Plus型号之间,没有真正值得注意的模拟器功能差异等。在过去几年的主要Xcode版本中,他们只是包括/让您为每个支持的设备创建特定于设备的模拟器,而不管模拟器实现的这些设备是否有任何有意义的差异。(当然,还有很多硬件差异超出了模拟器的范围,例如Metal功能集或相机特性)。
在他们开始具有特定于设备的模拟器配置文件之前(在Xcode 6左右,如果我没记错?),模拟器提供了一组较小的配置文件,将显着屏幕几何差异映射到 - 例如,iPhone 3.5英寸,iPhone 3.5英寸视网膜,iPhone 4英寸视网膜,iPhone 4.7英寸视网膜,iPad,iPad retina等。
其中一个问题,也是苹果改变方向的原因之一,是苹果设备种类的增加和历史使得在头脑中跟踪什么是什么更加困难。(好吧,我现在想看看我的应用在iPhone 5s上的效果。那是什么屏幕尺寸?)另一个可能是自2014年以来,UI大小与设备大小没有直接关联,其中iPhone 6和6 Plus(及其后继产品)提供了缩放的UI模式(如果我没记错,这也是模拟器的功能)。
另一个问题是有些设备差异并不映射到屏幕差异,例如64位支持(虽然在模拟器上作为x86_64二进制文件运行64位应用程序与在设备上运行arm64二进制文件没有太大区别,但它是第一次近似),Touch ID(模拟器提供代理),等等。(正如@russbishop的答案所指出的那样)模拟器还确保API(如uname)返回逼真的值(例如iPhone8的iPhone10,1),而不是虚构的模拟设备。
如果您希望将Xcode中可用的模拟器目标减少到仅具有重要屏幕几何差异的目标,请随意访问“设备和模拟器”窗口,并根据您的喜好删除/重命名。对于iOS 11,您可以缩减到仅iPhone 5s / SE / iPod Touch第6代,iPhone 6 / 6s / 7/8,iPhone Plus,iPhone X和三种iPad屏幕大小,从而得到8个不同的运行目的地,而不是默认的17个。

3
答案是因为模拟器试图尽可能准确。这包括返回正确的模型标识符以及框架行为的差异。有时会有新的硬件特性(例如Touch ID,Face ID)仅在相关模拟器上可用。

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