ITBear旗下自媒體矩陣:

將 iPad 應(yīng)用移植到 Mac 電腦上,蘋(píng)果的跨平臺(tái)計(jì)劃是如何實(shí)現(xiàn)的?

   時(shí)間:2019-07-03 10:11:10 來(lái)源:愛(ài)范兒編輯:星輝 發(fā)表評(píng)論無(wú)障礙通道

iOS 和 macOS 兩大系統(tǒng)的應(yīng)用生態(tài)融合是一個(gè)極具野心的項(xiàng)目,也是蘋(píng)果近幾年在軟件層面實(shí)施的最大改動(dòng)。Ars Technica 近日采訪(fǎng)了幾位蘋(píng)果工程師和第三方開(kāi)發(fā)者,對(duì)這個(gè)項(xiàng)目做了進(jìn)一步解析。

早在 2018 年的 WWDC 大會(huì)上,蘋(píng)果就公開(kāi)回應(yīng)了一個(gè)已經(jīng)被討論許久的話(huà)題,那就是 iOS 和 macOS 在系統(tǒng)上的融合。但實(shí)際上,蘋(píng)果并未打算將兩個(gè)系統(tǒng)合并,它真正想做的其實(shí)是打通移動(dòng)端和桌面端的應(yīng)用生態(tài)。

作為首批展示案例,在 macOS 10.14 中,蘋(píng)果就曾把 iOS 端的新聞、股票等手機(jī)應(yīng)用移植到 Mac 系統(tǒng)中,強(qiáng)調(diào)可以讓開(kāi)發(fā)者用「很少的精力」就能實(shí)現(xiàn)這樣的移植工作。

▲ 圖片來(lái)自:Forbes

到了今年,蘋(píng)果進(jìn)一步公開(kāi)了名為「Project Cataylst」的項(xiàng)目,讓廣大第三方開(kāi)發(fā)者也參與到移植工作中。

簡(jiǎn)單來(lái)說(shuō),現(xiàn)在開(kāi)發(fā)者們可以利用蘋(píng)果提供的新工具包,只要對(duì) iPad 應(yīng)用的底層代碼做簡(jiǎn)單的調(diào)整,就能直接創(chuàng)建一個(gè)可以在 Mac 電腦上運(yùn)行的應(yīng)用。

這聽(tīng)起來(lái)似乎并不困難,但項(xiàng)目本身仍然有很多讓人在意的細(xì)節(jié)。

如何將一款 iPad 應(yīng)用搬到 Mac 電腦上?

去年,蘋(píng)果工程副總裁克雷格·費(fèi)德里吉(Craig Federighi)曾介紹「Project Cataylst」項(xiàng)目的設(shè)立目的,就是為了讓成熟的 iOS 應(yīng)用生態(tài)來(lái)倒推 Mac 平臺(tái)的發(fā)展,豐富桌面端的應(yīng)用。

從數(shù)據(jù)來(lái)看,iPhone 的用戶(hù)規(guī)模已經(jīng)接近 10 億,而使用 Mac 電腦的用戶(hù)量?jī)H為 1 億而已,在這樣的懸殊差距下,指望開(kāi)發(fā)者只為 Mac 開(kāi)發(fā)應(yīng)用顯然很困難,而移植則是彌補(bǔ)差距最快速、簡(jiǎn)單的策略。

但作為平臺(tái)方,想要拉攏足夠多的第三方開(kāi)發(fā)者參與其中,顯然得先解決移植的工作量、成本和風(fēng)險(xiǎn)等問(wèn)題。

為此,蘋(píng)果第一步是計(jì)劃先將 iPad 應(yīng)用帶到 Mac 電腦中,而非數(shù)量更多的 iPhone 應(yīng)用。macOS 的高級(jí)市場(chǎng)總監(jiān) Todd Benjamin 解釋說(shuō),這是因?yàn)?iPad 應(yīng)用在上線(xiàn)時(shí)就已經(jīng)針對(duì)大屏幕做了適配,UI 界面基本都是現(xiàn)成可用的,反而是 iPhone 手機(jī)應(yīng)用需要重新修改設(shè)計(jì)。

但在具體的遷移過(guò)程中,iOS 與 macOS 兩個(gè)系統(tǒng)的編寫(xiě)底層仍存在不少差異。

最明顯的一點(diǎn),macOS 應(yīng)用使用 AppKit,而 iOS 應(yīng)用使用 UIKit,這是兩種不同的開(kāi)發(fā)框架,直接復(fù)用一套代碼顯然不現(xiàn)實(shí),蘋(píng)果只能盡可能地將兩者架構(gòu)中相同的部分整合到一起,降低移植的工作量。

▲ 整合后的底層架構(gòu)

Twitter 的工程師 Nolan O’Brien 在采訪(fǎng)時(shí)就表示,蘋(píng)果提供了一個(gè)可以讓開(kāi)發(fā)者重復(fù)利用現(xiàn)有代碼資源的套件,這意味著應(yīng)用廠(chǎng)商不必再為 Mac 應(yīng)用單獨(dú)設(shè)立一支運(yùn)維團(tuán)隊(duì)。

「今后我們對(duì)于 Mac 平臺(tái)的支持,會(huì)提升至和 iPhone、iPad 一樣的水準(zhǔn)?!筄’Brien 稱(chēng),目前 Twitter 的官方版 macOS 應(yīng)用已經(jīng)在 WWDC 上有過(guò)展示,之后就會(huì)上架 Mac 商店。

而旅行規(guī)劃軟件 Tripit 的開(kāi)發(fā)者 Rich Shimano 則認(rèn)為,移植工作的挑戰(zhàn)在于要照顧一些老舊的框架代碼,其中可能需要用新的 API 進(jìn)行改寫(xiě),此外還要調(diào)整 iPad 應(yīng)用對(duì)于多任務(wù)和窗口自動(dòng)布局的支持。

但架構(gòu)整合只是其中一點(diǎn),iPad 和 Mac 的硬件與交互差異也會(huì)對(duì)應(yīng)用設(shè)計(jì)產(chǎn)生影響,兩者的使用場(chǎng)景也都不盡相同。

蘋(píng)果在開(kāi)發(fā)者文檔中也提及,有的 iPad 應(yīng)用會(huì)借用陀螺儀、重力加速感應(yīng)器和后置攝像頭等元件配合使用,但這些元件并未集成在 Mac 電腦中,移植時(shí)蘋(píng)果也會(huì)自動(dòng)將不兼容的特性代碼進(jìn)行刪減。

而在交互方面,iPad 應(yīng)用基于的是觸摸屏和手勢(shì)操作,Mac 應(yīng)用則需要用鼠標(biāo)、鍵盤(pán)或觸控板。其中的交互變化會(huì)在移植過(guò)程中自動(dòng)轉(zhuǎn)換,比如手指的觸摸/長(zhǎng)按操作會(huì)對(duì)應(yīng)鼠標(biāo)單擊或雙指點(diǎn)擊,也會(huì)加上窗口大小調(diào)整、窗口拖放、全屏顯示等只有在 Mac 電腦上才會(huì)用到的功能。

自動(dòng)轉(zhuǎn)換下來(lái)的應(yīng)用只能達(dá)到「可用」的層面,如果開(kāi)發(fā)者想要實(shí)現(xiàn)更豐富的功能,比如邊欄設(shè)計(jì),新增模塊等,還需要做針對(duì)性的編程處理。

但在新的開(kāi)發(fā)環(huán)境下,開(kāi)發(fā)者的工作量確實(shí)明顯下降了。據(jù)采訪(fǎng)介紹,Gameloft 的開(kāi)發(fā)團(tuán)隊(duì)只花了一天時(shí)間,就將《狂野飆車(chē) 9》從一個(gè) iOS 應(yīng)用轉(zhuǎn)變?yōu)橐粋€(gè)可運(yùn)行的 Mac 電腦游戲、他們刪減了只能在 iPad 上使用的重力感應(yīng)操作,改寫(xiě)了 UI 界面和部分代碼,實(shí)現(xiàn)在 Mac 平臺(tái)穩(wěn)定 60 幀的運(yùn)行。

同時(shí),在桌面級(jí)芯片的支持下,移植類(lèi)應(yīng)用也能獲得額外的性能資源。

Gameloft 圖形工程師 Alex Urbano 就表示,他們?cè)?Mac 平臺(tái)上實(shí)現(xiàn)了更高分辨率的支持,同時(shí)還增加了一些新的畫(huà)面特性,比如車(chē)輛的自動(dòng)陰影、超采樣、高質(zhì)量的運(yùn)動(dòng)模糊和屏幕空間反射功能。

Mac 應(yīng)用的數(shù)量多了,但質(zhì)量能保證嗎?

雙端應(yīng)用融合計(jì)劃被業(yè)內(nèi)視為是蘋(píng)果重新重視起 Mac 平臺(tái)的信號(hào),但它也引發(fā)了部分 Mac 核心用戶(hù)的擔(dān)憂(yōu)。

一方面,蘋(píng)果的新套件確實(shí)能為 Mac 平臺(tái)帶來(lái)一大批新的應(yīng)用;但另一方面,這可能也會(huì)降低開(kāi)發(fā)者從零設(shè)計(jì)一款獨(dú)立 Mac 應(yīng)用的熱情,而傾向于用移植工具解決一切。

▲ 移植到 macOS 平臺(tái)的股票應(yīng)用

畢竟,從現(xiàn)有幾款移植自 iPad 平臺(tái)的應(yīng)用來(lái)看,它們的界面都十分簡(jiǎn)單,基本就是主界面加一個(gè)側(cè)邊欄的設(shè)計(jì),功能也和 iPad 端基本相同,有的甚至直接照搬了移動(dòng)端的 UI 控件,這放在強(qiáng)調(diào)使用鍵鼠、觸控板操控的 Mac 平臺(tái)上顯得格外另類(lèi)。

不過(guò),蘋(píng)果工程師們卻認(rèn)為,「Project Cataylst」項(xiàng)目的價(jià)值在于降低移植門(mén)檻,但并未改變 Mac 應(yīng)用開(kāi)發(fā)的可能性與上限。

「我們讓移動(dòng)開(kāi)發(fā)者可以在一款基于 UIKit 移動(dòng)應(yīng)用的基礎(chǔ)上,使用 Appkit 桌面端的特性來(lái)進(jìn)行調(diào)整和修改。而對(duì)于那些創(chuàng)意內(nèi)容人士和專(zhuān)業(yè)級(jí)工具而言,他們會(huì)清楚自己的用戶(hù)群和受眾想要什么內(nèi)容?!?/p>

Gameloft 圖形工程師 Alex Urbano 也表示,現(xiàn)在的移植工具對(duì)于人力和工作效率的幫助都很明顯。只有需要用到 Mac 中某個(gè)特定的硬件功能,他們才會(huì)考慮重頭設(shè)計(jì)一款應(yīng)用。

為了確保質(zhì)量,推動(dòng)開(kāi)發(fā)者對(duì)于 Mac 應(yīng)用的迭代,去年蘋(píng)果還改進(jìn)了 Mac 應(yīng)用商店的頁(yè)面,讓廠(chǎng)商可以看到用戶(hù)的評(píng)分和反饋,并進(jìn)一步拉進(jìn)開(kāi)發(fā)者和用戶(hù)之間的關(guān)系。

同時(shí),蘋(píng)果也希望在新套件的影響下,能夠讓那些過(guò)去只為 Mac 做應(yīng)用的開(kāi)發(fā)者們能夠重新考慮 iPad 平臺(tái),尤其是在 iPadOS 出現(xiàn)后,蘋(píng)果對(duì)于 iPad 生產(chǎn)力工具的定位也變得更為明確。

「過(guò)去 Mac 平臺(tái)只擁有那些復(fù)雜的應(yīng)用軟件,它們的功能很強(qiáng)大,適用范圍也十分廣泛,而移動(dòng)端的應(yīng)用往往都較為單一,強(qiáng)調(diào)的是專(zhuān)注?,F(xiàn)在蘋(píng)果希望將兩者合并到一起,讓用戶(hù)在 Mac 上也能享受到 iPad 和 iPhone 上的應(yīng)用生態(tài),并在多個(gè)平臺(tái)保持一致的使用體驗(yàn)?!咕退悴挥谩窹roject Cataylst」,開(kāi)發(fā)者們也還有 SwiftUI 可選。這是蘋(píng)果為了旗下多個(gè)系統(tǒng)提供的一套統(tǒng)一的 UI 編寫(xiě)框架,同樣可以降低多平臺(tái)應(yīng)用開(kāi)發(fā)門(mén)檻。

不過(guò),在開(kāi)發(fā)者看來(lái),是否要在 Mac 平臺(tái)上做一個(gè)原生應(yīng)用仍存在爭(zhēng)議。尤其是那些偏向娛樂(lè)消費(fèi)的應(yīng)用,比如說(shuō)你想在嗶哩嗶哩上看一部動(dòng)漫,在 iPad 端可能會(huì)點(diǎn)開(kāi)一個(gè)應(yīng)用,但在 Mac 上則習(xí)慣直接登錄網(wǎng)頁(yè)端。

如果能用網(wǎng)頁(yè)端就能解決,原生應(yīng)用自然不是必需,那消耗精力開(kāi)發(fā)獨(dú)立桌面應(yīng)用的意義又是什么?拋開(kāi)市場(chǎng)需求不談,這在缺乏明確商業(yè)利益的情況下更是如此。

根據(jù)彭博社于今年年初的報(bào)道,蘋(píng)果計(jì)劃在 2021 年左右徹底打通移動(dòng)端和桌面端的應(yīng)用,屆時(shí) iPad、iPhone 和 Mac 將會(huì)共用一個(gè)應(yīng)用商店,消費(fèi)者可以實(shí)現(xiàn)「一次付費(fèi),同時(shí)在三個(gè)平臺(tái)使用應(yīng)用」的體驗(yàn),而無(wú)需在不同平臺(tái)上分別購(gòu)買(mǎi)同一個(gè)應(yīng)用。

這不是一件容易的事情,它涉及到蘋(píng)果對(duì)應(yīng)用商店戰(zhàn)略的調(diào)整,也取決于開(kāi)發(fā)者群體的支持力度。

舉報(bào) 0 收藏 0 打賞 0評(píng)論 0
 
 
更多>同類(lèi)資訊
全站最新
熱門(mén)內(nèi)容
網(wǎng)站首頁(yè)  |  關(guān)于我們  |  聯(lián)系方式  |  版權(quán)聲明  |  網(wǎng)站留言  |  RSS訂閱  |  違規(guī)舉報(bào)  |  開(kāi)放轉(zhuǎn)載  |  滾動(dòng)資訊  |  English Version