# 将 iPad 应用移植到 Mac 电脑上，苹果的跨平台计划是如何实现的？

- 作者：木斯
- 发布时间：2019-07-02 18:42
- 分类：公司
- 原文：https://www.ifanr.com/1231001

![](https://s3.ifanr.com/wp-content/uploads/2019/07/things-3-hero.jpg)

iOS 和 macOS 两大系统的应用生态融合是一个极具野心的项目，也是苹果近几年在软件层面实施的最大改动。[Ars Technica](https://arstechnica.com/gadgets/2019/07/catalyst-deep-dive-the-future-of-mac-software-according-to-apple-and-devs/) 近日采访了几位苹果工程师和第三方开发者，对这个项目做了进一步解析。

早在 2018 年的 WWDC 大会上，苹果就公开回应了一个已经被讨论许久的话题，那就是 iOS 和 macOS 在系统上的融合。但实际上，苹果并未打算将两个系统合并，[它真正想做的其实是打通移动端和桌面端的应用生态](https://www.ifanr.com/1044591)。

![](https://s3.ifanr.com/wp-content/uploads/2019/07/iOS_apps_for_Mac.jpg)

作为首批展示案例，在 macOS 10.14 中，苹果就曾把 iOS 端的新闻、股票等手机应用移植到 Mac 系统中，强调可以让开发者用「很少的精力」就能实现这样的移植工作。

![](https://s3.ifanr.com/wp-content/uploads/2019/07/ff.jpg)

▲ 图片来自：[Forbes](https://www.forbes.com/sites/jeanbaptiste/2019/06/05/how-apples-project-catalyst-could-bring-thousands-of-ipad-apps-to-the-mac/)



到了今年，苹果进一步公开了名为「[Project Catalyst](https://developer.apple.com/cn/ipad-apps-for-mac/)」的项目，让广大第三方开发者也参与到移植工作中。

简单来说，现在开发者们可以利用苹果提供的新工具包，只要对 iPad 应用的底层代码做简单的调整，就能直接创建一个可以在 Mac 电脑上运行的应用。

这听起来似乎并不困难，但项目本身仍然有很多让人在意的细节。

### 如何将一款 iPad 应用搬到 Mac 电脑上？

去年，苹果工程副总裁克雷格·费德里吉（Craig Federighi）曾介绍「Project Catalyst」项目的[设立目的](https://techcrunch.com/2018/06/04/apple-is-bringing-the-best-of-ios-to-macos/)，就是为了让成熟的 iOS 应用生态来倒推 Mac 平台的发展，丰富桌面端的应用。

从数据来看，iPhone 的用户规模已经接近 10 亿，而使用 Mac 电脑的用户量仅为 1 亿而已，在这样的悬殊差距下，指望开发者只为 Mac 开发应用显然很困难，而移植则是弥补差距最快速、简单的策略。

但作为平台方，想要拉拢足够多的第三方开发者参与其中，显然得先解决移植的工作量、成本和风险等问题。

![](https://s3.ifanr.com/wp-content/uploads/2019/07/working-together.jpg)

为此，苹果第一步是计划先将 iPad 应用带到 Mac 电脑中，而非数量更多的 iPhone 应用。macOS 的高级市场总监 Todd Benjamin 解释说，这是因为 iPad 应用在上线时就已经针对大屏幕做了适配，UI 界面基本都是现成可用的，反而是 iPhone 手机应用需要重新修改设计。

但在具体的迁移过程中，iOS 与 macOS 两个系统的编写底层仍存在不少差异。

![](https://s3.ifanr.com/wp-content/uploads/2019/07/Catalyst-old-stack-1440x809.png)

最明显的一点，macOS 应用使用 AppKit，而 iOS 应用使用 UIKit，这是两种不同的开发框架，直接复用一套代码显然不现实，苹果只能尽可能地将两者架构中相同的部分整合到一起，降低移植的工作量。

![](https://s3.ifanr.com/wp-content/uploads/2019/07/Catalyst-new-stack-1440x808.png)

▲ 整合后的底层架构



Twitter 的工程师 Nolan O’Brien 在采访时就表示，苹果提供了一个可以让开发者重复利用现有代码资源的套件，这意味着应用厂商不必再为 Mac 应用单独设立一支运维团队。

「今后我们对于 Mac 平台的支持，会提升至和 iPhone、iPad 一样的水准。」O’Brien 称，目前 Twitter 的官方版 macOS 应用已经在 WWDC 上有过展示，之后就会上架 Mac 商店。

![](https://s3.ifanr.com/wp-content/uploads/2019/07/ScreenSho.png)

而旅行规划软件 Tripit 的开发者 Rich Shimano 则认为，移植工作的挑战在于要照顾一些老旧的框架代码，其中可能需要用新的 API 进行改写，此外还要调整 iPad 应用对于多任务和窗口自动布局的支持。

但架构整合只是其中一点，iPad 和 Mac 的硬件与交互差异也会对应用设计产生影响，两者的使用场景也都不尽相同。

![](https://s3.ifanr.com/wp-content/uploads/2019/07/WWDC-201.gif)

[苹果在开发者文档中也提及](https://developer.apple.com/design/human-interface-guidelines/ios/overview/ipad-apps-for-mac/#adopt-macos-app-structure-and-navigation-conventions)，有的 iPad 应用会借用陀螺仪、重力加速感应器和后置摄像头等元件配合使用，但这些元件并未集成在 Mac 电脑中，移植时苹果也会自动将不兼容的特性代码进行删减。

[而在交互方面](https://developer.apple.com/documentation/uikit/creating_a_mac_version_of_your_ipad_app/optimizing_your_ipad_app_for_mac)，iPad 应用基于的是触摸屏和手势操作，Mac 应用则需要用鼠标、键盘或触控板。其中的交互变化会在移植过程中自动转换，比如手指的触摸/长按操作会对应鼠标单击或双指点击，也会加上窗口大小调整、窗口拖放、全屏显示等只有在 Mac 电脑上才会用到的功能。

自动转换下来的应用只能达到「可用」的层面，如果开发者想要实现更丰富的功能，比如边栏设计，新增模块等，还需要做针对性的编程处理。

![](https://s3.ifanr.com/wp-content/uploads/2019/07/WWDC-2019-Keynote.png)

但在新的开发环境下，开发者的工作量确实明显下降了。据采访介绍，Gameloft 的开发团队只花了一天时间，就将《狂野飙车 9》从一个 iOS 应用转变为一个可运行的 Mac 电脑游戏、他们删减了只能在 iPad 上使用的重力感应操作，改写了 UI 界面和部分代码，实现在 Mac 平台稳定 60 帧的运行。

同时，在桌面级芯片的支持下，移植类应用也能获得额外的性能资源。

Gameloft 图形工程师 Alex Urbano 就表示，他们在 Mac 平台上实现了更高分辨率的支持，同时还增加了一些新的画面特性，比如车辆的自动阴影、超采样、高质量的运动模糊和屏幕空间反射功能。

### Mac 应用的数量多了，但质量能保证吗？

双端应用融合计划被业内视为是苹果重新重视起 Mac 平台的信号，但它也引发了部分 Mac 核心用户的担忧。

一方面，苹果的新套件确实能为 Mac 平台带来一大批新的应用；但另一方面，这可能也会降低开发者从零设计一款独立 Mac 应用的热情，而倾向于用移植工具解决一切。

![](https://s3.ifanr.com/wp-content/uploads/2019/07/mousse-87.jpg)

▲ 移植到 macOS 平台的股票应用



毕竟，从现有几款移植自 iPad 平台的应用来看，它们的界面都十分简单，基本就是主界面加一个侧边栏的设计，功能也和 iPad 端基本相同，有的甚至直接照搬了移动端的 UI 控件，这放在强调使用键鼠、触控板操控的 Mac 平台上显得格外另类。

不过，苹果工程师们却认为，「Project Catalyst」项目的价值在于降低移植门槛，但并未改变 Mac 应用开发的可能性与上限。

> 「我们让移动开发者可以在一款基于 UIKit 移动应用的基础上，使用 Appkit 桌面端的特性来进行调整和修改。而对于那些创意内容人士和专业级工具而言，他们会清楚自己的用户群和受众想要什么内容。」

![](https://s3.ifanr.com/wp-content/uploads/2019/07/ScreenShot.png)

Gameloft 图形工程师 Alex Urbano 也表示，现在的移植工具对于人力和工作效率的帮助都很明显。只有需要用到 Mac 中某个特定的硬件功能，他们才会考虑重头设计一款应用。

为了确保质量，推动开发者对于 Mac 应用的迭代，去年苹果还改进了 Mac 应用商店的页面，让厂商可以看到用户的评分和反馈，并进一步拉进开发者和用户之间的关系。

同时，苹果也希望在新套件的影响下，能够让那些过去只为 Mac 做应用的开发者们能够重新考虑 iPad 平台，尤其是在 iPadOS 出现后，苹果对于 iPad 生产力工具的定位也变得更为明确。

> 「过去 Mac 平台只拥有那些复杂的应用软件，它们的功能很强大，适用范围也十分广泛，而移动端的应用往往都较为单一，强调的是专注。现在苹果希望将两者合并到一起，让用户在 Mac 上也能享受到 iPad 和 iPhone 上的应用生态，并在多个平台保持一致的使用体验。」

就算不用「Project Catalyst」，开发者们也还有 SwiftUI 可选。这是苹果为了旗下多个系统提供的一套统一的 UI 编写框架，同样可以降低多平台应用开发门槛。

![](https://s3.ifanr.com/wp-content/uploads/2019/07/mousse-88.jpg)

不过，在开发者看来，是否要在 Mac 平台上做一个原生应用仍存在争议。尤其是那些偏向娱乐消费的应用，比如说你想在哔哩哔哩上看一部动漫，在 iPad 端可能会点开一个应用，但在 Mac 上则习惯直接登录网页端。

如果能用网页端就能解决，原生应用自然不是必需，那消耗精力开发独立桌面应用的意义又是什么？抛开市场需求不谈，这在缺乏明确商业利益的情况下更是如此。

[根据彭博社于今年年初的报道](https://www.ifanr.com/1176255)，苹果计划在 2021 年左右彻底打通移动端和桌面端的应用，届时 iPad、iPhone 和 Mac 将会共用一个应用商店，消费者可以实现「一次付费，同时在三个平台使用应用」的体验，而无需在不同平台上分别购买同一个应用。

这不是一件容易的事情，它涉及到苹果对应用商店战略的调整，也取决于开发者群体的支持力度。

题图来源：[The Sweet Setup](https://thesweetsetup.com/apps/best-personal-gtd-app-suite/)
