WWDC20 10621 支持性能密集型的应用和游戏

iOS 和 iPadOS 提供了强大的功能,可帮助我们开发人员在所有设备上,运行复杂的应用和游戏。但是,在某些情况下,一些对性能要求十分苛刻的应用可能只能在具有 A12 仿生芯片,或更高性能的设备上提供最佳的体验。在 Xcode 12 上,对于性能密集型的应用或游戏,开发人员可以启用一项设置,来表明自己的产品对于性能有着特殊的需求。

设备能力要求选项

设备能力要求选项(Required device capabilities)是 info.plist 中的一个设置项。它其实并不是一个全新的设置项,Xcode 在之前就已经加入了这个选项。有的同学可能不太熟悉这个选项,它其实就是用来声明我们的应用需要的一些特殊能力,这些特殊能力是和设备相关的,例如 ARKit,它只能在比较新的一些设备上运行。这和我们指定应用能够支持的最低系统版本有点类似,但因为这些特殊能力不仅和系统版本有关系,也依赖于设备本身的硬件支持,所以需要用这个选项来另行声明。

有了这个选项,我们就可以声明一系列应用运行时所需的,与设备硬件相关的能力。然后,在我们把应用上传到 App Store 时,苹果就可以获取到我们的应用需要的一系列硬件能力。而后,App Store 在进行应用的分发时,就可以确保只让支持相关硬件能力的设备,下载到我们的应用。避免用户下载完应用后,一运行,才发现自己手机不支持。

即使用户强行安装了应用,iOS 也会直接阻止应用运行。

现有的设备能力要求选项

之前,为了确保一些特殊的应用或者游戏能够限制在特定高性能的机器上运行,已经有了一些可选项,例如:

  • Metal
  • ARKit

Metal 高性能渲染只有在 A7 芯片上才能运行,而 ARKit 只有在支持 AR 的设备上才能运行,一般来说是 A9 或更高的芯片。设置了对应的选项之后,就可以确保应用只在支持 Metal 或是 ARKit 的设备上运行。

新的选项

随着 iOS 14 的推出,现在 Xcode 12 中增加了一个新的设备要求选项——指定需要 A12 仿生芯片以上的处理器。有了这个选项,我们就可以将 PC 级别的游戏,或是专业软件移植到 iPhone 或者 iPad 上。

新的选项的键值为 iphone-ipad-minimum-performance-a12。该项设置在 Xcode 12 上开始生效。

声明了这项要求后,就指定了需要 A12 仿生芯片以上等级的芯片。该等级包含了:

  • 6核 CPU 和4核 GPU
  • 第二代神经网络引擎
  • ARKit 3个数量的人体识别和动作捕捉
  • Metal GPU 系列 Apple 5

目前支持该等级的设备包括:

  • iPhone 11
  • iPhone 11 Pro
  • iPhone SE 2
  • iPad Mini 5th
  • iPad Pro 4th

如何设置

打开 info.plist,找到 Required device capabilities 设置项,如果没有则新增一个。该设置项是个数组。在该设置项下新增一个 item,item 的值选择 A12 的选项,即可完成设置。

何时使用这个选项

首先,苹果肯定是鼓励大家兼容越多机型越好的,不然旧设备各种应用运行不了,用户也会有很大意见。因此,这个设置不到万不得已,尽量不要使用。

使用这个设置项的一个前提是,我们已经对我们的应用或者游戏,进行了极致的性能优化。
只有我们已经尽可能地优化性能了,但还是无法兼容 A12 以下的设备。或是我们必须用到 A12 芯片的某些特有能力,我们才来考虑是否要启用这个设置项。需要注意的是,该设置项需要在 iOS 14 下才能生效。

注意,一旦开启该设置项,应用就无法被 A12 以下的设备下载和安装。为了测试设置项是否生效,我们可以提前用 TestFlight 来进行验证。

阅读更多

更多关于 Metal 相关的性能优化,可以参见以下两个 Session:

  • Delivering Optimized Metal Apps and Games
  • Harness Apple GPUs with Metal