848b422351526de3952d67f86ed717c3
WWDC20 10114 - Apple Silicon Mac 上的 iPad 与 iPhone App 运行

今年 WWDC 最为重磅的消息可能就是 Apple Silicon Mac——搭载着苹果自研芯片的 Mac。得益于 CPU 架构的统一,在 Mac上原生的运行 iPhone 或者 iPad App 似乎已经不是那么的遥不可及了。相信很多人都会好奇苹果将会用什么样的方式将这些移动设备上的 App 带到我们手中的 Mac 上。Session 10114 iPad and iPhone apps on Apple Silicon Macs 就是对这些疑问的一个统一回答。

概述

简单来说,Session 10114 主要向我们传达了这几个信息:

  • 运行方面:在不依赖 macOS 系统没有的 SDK 的前提下,所有的 iPhone/iPad App 在 Apple Silicon Mac 上都可以无需改动运行起来,只是很多地方看起来会不那么符合 macOS 风格,结合 Catalyst 会让我们的 App 在 macOS 上更好用
  • 调试方面:调试运行在 Mac 上的 iPhone/iPad 的过程和在模拟器、真机上完全相同
  • 发布方面:默认所有的 iPhone/iPad App 都可以发布到 Mac App Store,开发者可以选择手动关闭,同时像 Ad Hoc 或者企业分发这种 App Store 外的发布流程也和之前基本相同

接下来,我们来详细了解一下苹果的工程师都说了什么。

运行

在有 Apple Silicon Mac 之前,在 macOS 上我们一般会开发这四种类型的应用程序:

  • Mac apps: 基于 AppKit 开发,比较老牌的一种开发方式
  • Mac Catalyst apps:在 macOS Catalina 后才支持的开发方式,基于 UIKIt 开发
  • Web Apps:基于前端技术栈开发,比较老牌的一种开发方式
  • Games:基于 Metal 框架开发,相对比较新的一种开发方式

得益于 Catalyst 在 macOS 上引入的 UIKit,在 Apple Silicon Mac 上,我们可以非常轻松的运行原本运行在 iPhone/iPad 上的 App。

默认运行起来的这些 App 在很多方面上都可以获得类似 macOS App 的体验,包括:

  • Standard window chrome(就是 Mac app 左上角的那三个按钮)
  • Menu bar
  • macOS app lifecycle
  • Preferences panel
  • Dock presence
  • Dark Mode
  • Open/save panels(CMD + O / CMD + S会打开的那个面板)
  • Text behaviors
  • Font and color panels
  • Scroll bars
  • Touch Bar
  • Printing
  • Alerts
  • Drag and drop(和 iOS 上的类似,通过拖拽将一个 App 中的内容移动到另一个 App 中,参见 Human Interface Guidelines - Drag and Drop

注意:

尽管以上这些内容是可以自动获得的,但仅仅有这些能力并不足以让一个 App 在 macOS 获得良好的体验,这些 App 仅仅是处于 “能用” 的状态。如果想要让 App 在 macOS 上“好用”,苹果的工程师建议我们使用 Catalyst 来优化 App 的体验。

不过获得以上这些体验的前提是,App 能够在 macOS 上正常的运行起来。

要想让 App 能够在 macOS 上正常的运行起来,开发者需要关注这几个方面的事情:

  • App 没有依赖 macOS 上不存在的 API 或者是 SDK(包括系统的和第三方库的)
  • App 没有依赖 macOS 缺失的功能
  • App 没有依赖 Mac 所不具有的硬件能力

除此之外,在代码的健壮性上,开发者需要关注 iPhone/iPad App 在 Mac 上运行会有如下方面的不同:

  • 硬件上的不同
  • UI 上的不同
  • 系统软件上的不同

硬件上的不同

硬件方面,苹果的工程师主要提及了三点不同:

  • 鼠标与触摸事件的不同
  • 环境传感器的不同
  • 摄像头的不同
top Created with Sketch.