说到模拟器功能,除了设备ID之外,iPhone 7和iPhone 8模拟器之间会有什么不同?为什么Apple在Xcode中同时包含两者?
答案 0 :(得分:4)
你不可能得到权威的答案,为什么苹果......"这里的问题 - 作为企业实体的Apple并没有发布到SO。
iPhone 6,6s和7之间没有真正值得注意的模拟器功能,也没有两代iPad Pro 12.9和#34;硬件,以及各种iPhone Plus型号之间等。在过去几年的主要Xcode版本中,他们只是包含/允许您为每个支持的设备创建特定于设备的模拟器,无论是否有任何设备模拟器实现的那些设备之间有意义的差异。 (当然,有很多硬件差异超出了模拟器的范围,比如金属功能集或相机功能。)
在他们开始使用特定设备的模拟器配置文件之前(大约在Xcode 6,IIRC?的时间),模拟器提供了一组较小的配置文件,映射到屏幕几何的显着差异 - 例如iPhone 3.5",iPhone 3.5"视网膜,iPhone 4"视网膜,iPhone 4.7"视网膜,iPad,iPad视网膜等。
问题的一个问题,以及Apple改变方向的可能原因是Apple设备的种类和历史越来越多,因此难以跟踪您头脑中的内容。 (好的,我想看看我的应用程序现在如何在iPhone 5s上运行。那个屏幕尺寸是多少?)另外一个可能是自2014年以来UI尺寸与设备尺寸无直接关系,其中iPhone 6和6 Plus(他们的继任者提供了一种缩放的UI模式(IIRC也在模拟器中)。
另一个问题是,设备差异无法映射到屏幕差异,例如64位支持(并非在模拟器中运行64位应用程序作为x86_64二进制文件就像运行arm64二进制文件一样一个设备,但它是第一个近似值),Touch ID(模拟器为其提供代理)等等。(作为@ russbishop的答案说明)模拟器也确保像{{1}这样的API返回真实值(如iPhone 8的uname
),而不是虚构的模拟设备。
如果您希望将Xcode中的可用模拟器目标集减少到仅提供显着屏幕几何差异的目标,请随时访问“设备和模拟器”窗口并删除/重命名为您的心脏。内容。对于iOS 11,你可以减少iPhone 5s / SE / iPod Touch第六代,iPhone 6 / 6s / 7/8,iPhone Plus,iPhone X和三种尺寸的iPad屏幕,让你获得八个不同的运行目的地,而不是默认十七。
答案 1 :(得分:3)
答案是因为模拟器试图尽可能准确。其范围从返回正确的模型标识符到框架行为的差异。有时会有新的硬件功能(例如Touch ID,Face ID),这些功能仅在相关的模拟器上可用。