将 iPad 应用移植到 Mac 电脑上,苹果的跨平台计划是如何实现的?
iOS 和 macOS 两大系统的应用生态融合是一个极具野心的项目,也是 苹果 近几年在软件层面实施的最大改动。Ars Technica 近日采访了几位苹果工程师和第三方开发者,对这个项目做了进一步解析。
早在 2018 年的 WWDC 大会上,苹果就公开回应了一个已经被讨论许久的话题,那就是 iOS 和 macOS 在系统上的融合。但实际上,苹果并未打算将两个系统合并,它真正想做的其实是打通移动端和桌面端的应用生态。
作为首批展示案例,在 macOS 10.14 中,苹果就曾把 iOS 端的新闻、股票等 手机 应用移植到 Mac 系统中,强调可以让开发者用「很少的精力」就能实现这样的移植工作。
▲ 图片来自:Forbes
到了今年,苹果进一步公开了名为「Project Cataylst」的项目,让广大第三方开发者也参与到移植工作中。
简单来说,现在开发者们可以利用苹果提供的新工具包,只要对 iPad 应用的底层代码做简单的调整,就能直接创建一个可以在 Mac 电脑上运行的应用。
这听起来似乎并不困难,但项目本身仍然有很多让人在意的细节。
如何将一款 iPad 应用搬到 Mac 电脑上?
去年,苹果工程副总裁克雷格 · 费德里吉(Craig Federighi)曾介绍「Project Cataylst」项目的设立目的,就是为了让成熟的 iOS 应用生态来倒推 Mac 平台的发展,丰富桌面端的应用。
从数据来看,iPhone 的用户规模已经接近 10 亿,而使用 Mac 电脑的用户量仅为 1 亿而已,在这样的悬殊差距下,指望开发者只为 Mac 开发应用显然很困难,而移植则是弥补差距最快速、简单的策略。
但作为平台方,想要拉拢足够多的第三方开发者参与其中,显然得先解决移植的工作量、成本和风险等问题。
为此,苹果第一步是计划先将 iPad 应用带到 Mac 电脑中,而非数量更多的 iPhone 应用。macOS 的高级市场总监 Todd Benjamin 解释说,这是因为 iPad 应用在上线时就已经针对大屏幕做了适配,UI 界面基本都是现成可用的,反而是 iPhone 手机应用需要重新修改设计。
但在具体的迁移过程中,iOS 与 macOS 两个系统的编写底层仍存在不少差异。
最明显的一点,macOS 应用使用 AppKit,而 iOS 应用使用 UIKit,这是两种不同的开发框架,直接复用一套代码显然不现实,苹果只能尽可能地将两者架构中相同的部分整合到一起,降低移植的工作量。
▲ 整合后的底层架构
Twitter 的工程师 Nolan O'Brien 在采访时就表示,苹果提供了一个可以让开发者重复利用现有代码资源的套件,这意味着应用厂商不必再为 Mac 应用单独设立一支运维团队。
「今后我们对于 Mac 平台的支持,会提升至和 iPhone、iPad 一样的水准。」O'Brien 称,目前 Twitter 的官方版 macOS 应用已经在 WWDC 上有过展示,之后就会上架 Mac 商店。
而旅行规划软件 Tripit 的开发者 Rich Shimano 则认为,移植工作的挑战在于要照顾一些老旧的框架代码,其中可能需要用新的 API 进行改写,此外还要调整 iPad 应用对于多任务和窗口自动布局的支持。
但架构整合只是其中一点,iPad 和 Mac 的硬件与交互差异也会对应用设计产生影响,两者的使用场景也都不尽相同。
苹果在开发者文档中也提及,有的 iPad 应用会借用陀螺仪、重力加速感应器和后置摄像头等元件配合使用,但这些元件并未集成在 Mac 电脑中,移植时苹果也会自动将不兼容的特性代码进行删减。
而在交互方面,iPad 应用基于的是触摸屏和手势操作,Mac 应用则需要用鼠标、键盘或触控板。其中的交互变化会在移植过程中自动转换,比如手指的触摸 / 长按操作会对应鼠标单击或双指点击,也会加上窗口大小调整、窗口拖放、全屏显示等只有在 Mac 电脑上才会用到的功能。
自动转换下来的应用只能达到「可用」的层面,如果开发者想要实现更丰富的功能,比如边栏设计,新增模块等,还需要做针对性的编程处理。
但在新的开发环境下,开发者的工作量确实明显下降了。据采访介绍,Gameloft 的开发团队只花了一天时间,就将《狂野飙车 9》从一个 iOS 应用转变为一个可运行的 Mac 电脑 游戏 、他们删减了只能在 iPad 上使用的重力感应操作,改写了 UI 界面和部分代码,实现在 Mac 平台稳定 60 帧的运行。
同时,在桌面级芯片的支持下,移植类应用也能获得额外的性能资源。
Gameloft 图形工程师 Alex Urbano 就表示,他们在 Mac 平台上实现了更高分辨率的支持,同时还增加了一些新的画面特性,比如车辆的自动阴影、超采样、高质量的运动模糊和屏幕空间反射功能。
Mac 应用的数量多了,但质量能保证吗?
双端应用融合计划被业内视为是苹果重新重视起 Mac 平台的信号,但它也引发了部分 Mac 核心用户的担忧。
一方面,苹果的新套件确实能为 Mac 平台带来一大批新的应用;但另一方面,这可能也会降低开发者从零设计一款独立 Mac 应用的热情,而倾向于用移植工具解决一切。
▲ 移植到 macOS 平台的股票应用
毕竟,从现有几款移植自 iPad 平台的应用来看,它们的界面都十分简单,基本就是主界面加一个侧边栏的设计,功能也和 iPad 端基本相同,有的甚至直接照搬了移动端的 UI 控件,这放在强调使用键鼠、触控板操控的 Mac 平台上显得格外另类。
不过,苹果工程师们却认为,「Project Cataylst」项目的价值在于降低移植门槛,但并未改变 Mac 应用开发的可能性与上限。
「我们让移动开发者可以在一款基于 UIKit 移动应用的基础上,使用 Appkit 桌面端的特性来进行调整和修改。而对于那些创意内容人士和专业级工具而言,他们会清楚自己的用户群和受众想要什么内容。」
Gameloft 图形工程师 Alex Urbano 也表示,现在的移植工具对于人力和工作效率的帮助都很明显。只有需要用到 Mac 中某个特定的硬件功能,他们才会考虑重头设计一款应用。
为了确保质量,推动开发者对于 Mac 应用的迭代,去年苹果还改进了 Mac 应用商店的页面,让厂商可以看到用户的评分和反馈,并进一步拉进开发者和用户之间的关系。
同时,苹果也希望在新套件的影响下,能够让那些过去只为 Mac 做应用的开发者们能够重新考虑 iPad 平台,尤其是在 iPadOS 出现后,苹果对于 iPad 生产力工具的定位也变得更为明确。
「过去 Mac 平台只拥有那些复杂的应用软件,它们的功能很强大,适用范围也十分广泛,而移动端的应用往往都较为单一,强调的是专注。现在苹果希望将两者合并到一起,让用户在 Mac 上也能享受到 iPad 和 iPhone 上的应用生态,并在多个平台保持一致的使用体验。」
就算不用「Project Cataylst」,开发者们也还有 SwiftUI 可选。这是苹果为了旗下多个系统提供的一套统一的 UI 编写框架,同样可以降低多平台应用开发门槛。
不过,在开发者看来,是否要在 Mac 平台上做一个原生应用仍存在争议。尤其是那些偏向娱乐消费的应用,比如说你想在哔哩哔哩上看一部动漫,在 iPad 端可能会点开一个应用,但在 Mac 上则习惯直接登录网页端。
如果能用网页端就能解决,原生应用自然不是必需,那消耗精力开发独立桌面应用的意义又是什么?抛开市场需求不谈,这在缺乏明确 商业 利益的情况下更是如此。
根据彭博社于今年年初的报道,苹果计划在 2021 年左右彻底打通移动端和桌面端的应用,届时 iPad、iPhone 和 Mac 将会共用一个应用商店,消费者可以实现「一次付费,同时在三个平台使用应用」的体验,而无需在不同平台上分别购买同一个应用。
这不是一件容易的事情,它涉及到苹果对应用商店战略的调整,也取决于开发者群体的支持力度。
【来源:爱范儿】