當蘋果本月在WWDC上發(fā)布macOS Catalina時,,一個相關(guān)公告引起了Mac用戶和開發(fā)人員的極大興趣:一種將iPad應(yīng)用轉(zhuǎn)變?yōu)橥耆鶰ac應(yīng)用的新方法,。
這一名為“Project Catalyst”的項目旨在讓開發(fā)人員將現(xiàn)有的iOS應(yīng)用移植到Mac上。不過,,這引出了一些問題:這對Mac用戶意味著什么?這會改變?yōu)镸ac制作的軟件類型嗎?蘋果的生態(tài)系統(tǒng)是移動端優(yōu)先嗎,?
有開發(fā)人員擔心:Catalyst只是SwiftUI的墊腳石,在把iPad應(yīng)用遷移至Mac的過程中,,開發(fā)人員可能會遇到哪些挑戰(zhàn),?
Ars與負責在WWDC開發(fā)和推廣Project Catalyst的主要成員以及已經(jīng)用這種方式制作Mac應(yīng)用的少數(shù)開發(fā)人員進行了交談,向他們詢問了Catalyst的工作原理,、蘋果軟件的未來發(fā)展方向以及用戶可以期待的內(nèi)容等,。
Mac平臺在開發(fā)人員和創(chuàng)意人員中很受歡迎。iPhone和iPad應(yīng)用商城已經(jīng)成為業(yè)界最具活力的軟件生態(tài)系統(tǒng)之一,,但Mac應(yīng)用商城卻并非如此,。
蘋果試圖通過使用Catalyst將iOS應(yīng)用商城的一些成功應(yīng)用轉(zhuǎn)移到macOS上。本文將詳細介紹開發(fā)人員是如何逐步使用蘋果所構(gòu)建的內(nèi)容,,以及他們面臨的挑戰(zhàn),;將分享蘋果對我們所提出問題的答案,例如隨著移動衍生應(yīng)用涌入該平臺,,蘋果計劃如何保持Mac應(yīng)用的高標準質(zhì)量,;從整個生態(tài)系統(tǒng)來看,蘋果跨平臺應(yīng)用的長期計劃又是什么,。
Project Catalyst
據(jù)彭博社2017年12月報道,,蘋果正在開展一個項目,該項目將使得為macOS和iOS并行開發(fā)應(yīng)用變得更加容易,。我們今年在WWDC上了解到,,推動該項目的一個主要組成部分叫做Project Catalyst,它可以相對快速地將iPad上的應(yīng)用移植到Mac上,。
應(yīng)用開發(fā)人員現(xiàn)在可以開始使用集成開發(fā)工具Xcode的測試版本,。為了在WWDC舞臺上大肆宣傳,蘋果聲稱開發(fā)人員只需要在Xcode中打開他們的iPad應(yīng)用項目,,然后單擊一個復選框就可以構(gòu)建一個Mac應(yīng)用,。當然,它并不總是這樣簡單,,但應(yīng)該比你想象的要容易,。
具體運作方式
開發(fā)人員用于為iPad和Mac創(chuàng)建應(yīng)用的許多框架都是相似的,。蘋果在這方面所做的工作就是彌合iPad和Mac版本共享開發(fā)框架之間存在的差異。但最大的差距是UI框架之間的差距,。
開發(fā)人員使用UIKit框架構(gòu)建iPad應(yīng)用的用戶界面和功能,。與此同時,Mac有一個名為AppKit的框架,,可以執(zhí)行許多與UIKit相同的操作,。以前,Mac應(yīng)用無法運行使用UIKit制作的應(yīng)用,,iOS設(shè)備無法運行使用AppKit制作的應(yīng)用,。即使開發(fā)人員在構(gòu)建Mac版本時可以重復使用iPad應(yīng)用的某些部分,也需耗費額外的大量工作,。
有些框架可以在一個平臺上使用,,但不能在另一個平臺上使用。例如,,在Mac上無法使用ARKit,,那些想用ARKit來提供增強現(xiàn)實體驗的開發(fā)人員需要考慮這一點。在某些情況下,,ARKit會自動過濾與目標設(shè)備上不存在的功能和框架有關(guān)的代碼,。
某些情況下,開發(fā)人員當然可以在其代碼中使用條件邏輯,,根據(jù)運行軟件的設(shè)備提供不同的體驗和功能,。但是,蘋果希望保留這種方法,,用于應(yīng)對某種不同設(shè)備對不同功能的需求,。
“我們希望他們盡可能少地使用條件,因為條件是不同的代碼路徑,,”Catalyst負責人Ozer解釋道,。“而且我認為與條件相關(guān)的是API和功能,,它們實際上只是Mac版本,。”
蘋果表示,,許多開發(fā)人員構(gòu)建的第一個第三方Catalyst應(yīng)用,,能在24小時內(nèi)在Mac上運行可接受的構(gòu)建版本。但每個應(yīng)用都面臨著一些獨特的挑戰(zhàn),。
開發(fā)人員的經(jīng)驗
少數(shù)蘋果開發(fā)人員已經(jīng)在使用Catalyst構(gòu)建第一個第三方應(yīng)用,,他們在WWDC上展示自己的應(yīng)用,。為了獲取更多信息,,Ars與開發(fā)人員討論了三個不同的應(yīng)用,,即開發(fā)人員如何成功地將iPad版本的Twitter、TripIt和Asphalt 9:Legends帶到了Mac上,。
Twitter在2016年停止了對其Mac應(yīng)用的支持,。雖然一些第三方Twitter應(yīng)用仍可用于macOS,但該公司繼續(xù)將Web視為Mac用戶使用社交媒體平臺的主要方式,。
今年在WWDC上詳細介紹Catalyst時,,蘋果透露Twitter將重返Mac。蘋果邀請Twitter的開發(fā)人員通過Catalyst構(gòu)建原生Mac Twitter應(yīng)用,,而且Twitter支持Mac升級到與iPhone,、iPad和iPod相同的水平。
Asphalt 9:Legends
你可能認為移植像Asphalt 9:Legends這樣圖形密集型3D游戲會遇到額外的障礙,。但這并不完全是Gameloft Barcelona圖形工程師Alex Urbano和引擎軟件工程師Manu Ruiz所描述的那樣,。
“這個過程非常簡單,在新的Xcode上打開當前的iOS項目,,標記新的macOS目標選項,,并進行編譯即可,”Ruiz說,?!帮@然,它在第一次嘗試時不起作用,,因為我們的一些庫在非移動設(shè)備上不受支持,,例如運動控制;而且一些第三方庫沒有為macOS和x86-64平臺做好準備,。在重構(gòu)了一些代碼之后,,我們設(shè)法在大約24小時內(nèi)編譯并運行了整個Asphalt代碼庫?!?/p>
關(guān)于圖像方面的調(diào)整,,Urbano說道:“這很簡單。我們必須調(diào)整一些著色器的精度,,使它們在高端Mac中以更高的分辨率正常工作,,以便進一步提高性能。我們稍微改變了Metal緩沖管理的工作方式,,這允許我們實現(xiàn)一些在其他平臺中不存在的效果,,同時保留60fps目標的原始分辨率?!?/p>
TripIt
iOS開發(fā)人員Rich Shimano向Ars發(fā)送了一封電子郵件,,其中列出了將旅行計劃應(yīng)用TripIt從iPad遷移到Mac的每個詳細步驟:
在Xcode中構(gòu)建當前的iPad應(yīng)用,只需要幾次迭代即可識別并刪除不支持資源上的各種依賴項,,例如特定電話呼叫的框架或尚未構(gòu)建以支持MacOS的第三方iOS SDK,。
遍歷所有用戶流和數(shù)據(jù)同步方案,,并關(guān)閉不支持或不可用的功能。
在Mac的多窗口點擊環(huán)境中定制UI以提高用戶效率,。
至于在過程中會遇到哪些挑戰(zhàn),,Shimano表示,最重要的是“舊的代碼庫依賴于已棄用的蘋果框架和API以及舊版本的Swift,,可能需要對現(xiàn)在的API進行重大改寫”,。此外,“不具有多任務(wù)友好性和靈活布局的iPad應(yīng)用可能需要進行大量重寫,,更多地依賴于自動布局,,以便在桌面窗口上進行適當渲染,即使在單個用戶會話中,,這些窗口的大小和寬高比也會有很大差異,。”
蘋果保證Mac應(yīng)用質(zhì)量達到桌面級
蘋果及其合作伙伴開發(fā)人員表示,,Catalyst能將iPad上的應(yīng)用輕松導入macOS,,但用戶對Mac上未來應(yīng)用質(zhì)量的擔憂仍然存在。
Project Catalyst是建立在macOS 10.14 Mojave之上,,這是該公司去年推出的macOS年度重大升級,。該公司推出的新聞、股票,、語音備忘錄和家庭應(yīng)用也是建立在這一系統(tǒng)之上,。
Mac高級用戶擔心,將iPad應(yīng)用遷移至Mac的簡單途徑將使開發(fā)人員無法提供過去用戶在Mac上享受的功能,,以及功能強大且全面的桌面應(yīng)用,。一部分原因是因為移動應(yīng)用往往側(cè)重于較窄的任務(wù),并且它們通常不具有與良好的桌面應(yīng)用一樣強大的功能集,。另一部分原因在于,,如果他們使用AppKit從頭開始構(gòu)建原生Mac應(yīng)用,UIKit和Catalyst都不會為Mac開發(fā)人員提供他們可以訪問的全部功能和框架,。
當然,,我們采訪過的蘋果團隊成員并沒有此類擔憂。Ozer表示,,首先,,UIKit確實為開發(fā)人員提供了訪問AppKit的權(quán)限?!爱斈銓IKit應(yīng)用帶到Mac上時,,我們會大量使用AppKit,例如,,當你使用工具欄,、觸控條或菜單時,,這些都是AppKit,”他說,。“因此開發(fā)人員不必直接使用AppKit,,但他們可在其UIKit應(yīng)用中使用AppKit,。”
當然,,蘋果認同AppKit是提供高端Mac應(yīng)用的方式,。蘋果開發(fā)人員關(guān)系高級總監(jiān)Pruden說,她認為Catalyst是為開發(fā)者提供了選擇,,但那些創(chuàng)建強大桌面應(yīng)用的團隊將知道它是否適合自己的產(chǎn)品,。
專用應(yīng)用與廣泛應(yīng)用
Benjamin認為有多種類型的應(yīng)用,并且它們在平臺上并不相互排斥,。這是了解蘋果新方法的關(guān)鍵,。他說:“我認為Mac上一直是些龐大而復雜且功能強大的應(yīng)用,它們的范圍十分廣泛,。我認為iOS上的應(yīng)用設(shè)計精良,,本質(zhì)上更有針對性。現(xiàn)在人們知道這些東西是什么,,他們也希望在電腦桌面上擁有這些簡單易用的體驗,。雖然網(wǎng)頁可以做到這一點,但應(yīng)用帶給用戶的體驗感更有優(yōu)勢?,F(xiàn)在你習慣于在手機和iPad上使用相對較新的體驗,,那為什么不能將相同的體驗遷移到Mac上呢?”
為什么在有Web應(yīng)用時仍要制作原生Mac應(yīng)用,?
雖然蘋果和微軟正在花費相當大的努力來吸引開發(fā)人員為他們的桌面操作系統(tǒng)制作原生應(yīng)用,,但谷歌正在根據(jù)不同的財務(wù)激勵來采取不同的策略。
谷歌新興的Chromebook本質(zhì)上是21世紀的虛擬終端,,從頭開始設(shè)計用于Web瀏覽體驗和使用基于Web的應(yīng)用,。但Mac有著悠久的專注于原生應(yīng)用的傳統(tǒng)。蘋果的開發(fā)人員為什么要通過從iPad移植軟件而不是讓Mac用戶在Safari或Chrome中訪問他們的Web應(yīng)用呢,?
Benjamin認為這與性能有關(guān),。“應(yīng)用作為原生應(yīng)用,,與用戶在Web上體驗的性能截然不同,,”他說。此外,,“還有另一個好處,,這樣做能讓用戶在不同設(shè)備上獲得相同的體驗,。”
macOS和iOS:先有雞還是先有蛋
鑒于iOS和iPadOS似乎是這種新模式的核心,,我們詢問蘋果是否認為iOS(和iPadOS)是其生態(tài)系統(tǒng)的主要開發(fā)平臺,。蘋果是否希望開發(fā)人員首先支持移動設(shè)備?
Pruden回答說,,不同的設(shè)備和操作系統(tǒng)適用于不同的用例,,對于開發(fā)人員來說,沒有哪一個平臺比其他平臺更重要,。
“從數(shù)量上來看,,顯然iPhone應(yīng)用是最多的,”Pruden繼續(xù)說道,?!暗也徽J為我們會把數(shù)量作為投放精力的主要考慮因素,它也不會影響我們決定下一步支持開發(fā)人員的方式,?!?/p>
然后是SwiftUI。雖然Catalyst旨在幫助開發(fā)人員將已有的iPad應(yīng)用帶到Mac上,,但蘋果建議將SwiftUI視為開始新的跨平臺項目的起點,。在這種情況下,首先要開發(fā)iOS或iPadOS,,然后再開發(fā)macOS,,就像開發(fā)所有原生蘋果平臺一樣。
了解SwiftUI
對于WWDC的開發(fā)人員而言,,Catalyst并不是其唯一的重要公告,,此外還包括SwiftUI。SwiftUI是一個框架,,旨在使用Xcode和蘋果的Swift編程語言“在每個平臺上聲明應(yīng)用的用戶界面和行為”,。
我們從蘋果開發(fā)者處了解到,SwiftUI提供視圖,、控件和布局結(jié)構(gòu),,用于聲明應(yīng)用的用戶界面。該框架提供事件處理程序,,為你的應(yīng)用提供點擊,、手勢和其他類型的輸入,以及管理從應(yīng)用模型到用戶將看到的交互視圖和控件的數(shù)據(jù)流,。
你可以將SwiftUI視圖與來自UIKit,、AppKit和WatchKit框架的對象集成,以進一步使用該平臺特定的功能。
雖然很難量化Swift的采用速度,,但工程師和macOS及iOS開發(fā)人員Andrew Madsen最近提出了一種可行的方法,,來估計Swift在蘋果應(yīng)用商城中廣泛運用的程度。
Madsen發(fā)現(xiàn)42%的應(yīng)用使用了Swift,,但是當他撇去游戲應(yīng)用時,,這一比例上升到了57%。實際上,,列表中沒有一個游戲使用Swift,,因為它們大多數(shù)是用Unity等跨平臺工具編寫的。
“一開始,,只有少數(shù)應(yīng)用使用Swift,;但三年后,,有約一半的應(yīng)用在使用Swift,,這也表明了蘋果在引入新語言方面做的很不錯,”他總結(jié)說道,。這對SwiftUI來說是個好兆頭,。
至于開發(fā)人員方面,Shimano表示,,TripIt在使用SwiftUI時已有一些重要的促進因素,,獨立于Mac應(yīng)用。也就是說,,它允許TripIt團隊與watchOS應(yīng)用共享公共代碼以改進功能校驗,,并將簡化和減少顯示快速變化的旅行數(shù)據(jù)所需的代碼量,例如航班延誤和更改登機口,。
“但是,,我們正在嘗試特定的桌面視圖,這些視圖有可能找到支持iPad甚至iPhone的方式,,”他補充道,。“通過在單個代碼庫中編寫SwiftUI,,我們應(yīng)該能夠通過Catalyst快速輕松地為我們的iPad和iPhone應(yīng)用帶來增強功能,。”
Twitter的O'Brien說:“現(xiàn)在,,我們專注于將非常龐大的代碼庫與許多傳統(tǒng)的UIKit接口一起移植到Mac上,。目前,Project Catalyst對我們來說是一個很好的解決方案,?!盩witter團隊對SwiftUI帶來的可能性感到非常興奮,并且該公司愿意在未來采用SwiftUI來獲取新功能。
制作Mac應(yīng)用的三種方法
總結(jié)一下,,現(xiàn)在有三種不同的方法可以使用蘋果自己的工具和框架開發(fā)原生Mac應(yīng)用:
使用UIKit構(gòu)建iOS或iPadOS應(yīng)用,,然后使用Project Catalyst將其轉(zhuǎn)換為macOS應(yīng)用。根據(jù)蘋果的說法,,這是針對那些迄今為止在移動設(shè)備上更常見而不是在桌面設(shè)備上使用的專用應(yīng)用,。
使用AppKit及相關(guān)框架和API為macOS構(gòu)建應(yīng)用,充分利用平臺的全部功能,。蘋果表示,,這適用于傳統(tǒng)的重型Mac專用應(yīng)用。
使用SwiftUI從頭開始為多個蘋果平臺構(gòu)建應(yīng)用,,SwiftUI可與其他現(xiàn)有框架配合使用,。這是蘋果期望開發(fā)人員在未來為多平臺應(yīng)用所做的事情。
一些Mac用戶認為蘋果的關(guān)注點在iOS上,,從而將Mac降級為替補角色,。但是對于iOS、iPadOS,、watchOS和tvOS而言,,Mac必須取得成功。Catalyst致力于支持Mac,,同時保持與公司移動平臺的緊密聯(lián)系,。從長遠來看,這將如何發(fā)揮作用還有待觀察,。大家需要為蘋果,、開發(fā)者和用戶所希望看到的最佳結(jié)果做準備。
如果你看了蘋果產(chǎn)品的營銷,,你可以清晰地了解到各類產(chǎn)品的目標客戶,。如今,大多數(shù)Mac主要銷售給創(chuàng)意人士和專業(yè)人士,,從作家到平面設(shè)計師,,從視頻編輯到開發(fā)人員再到3D動畫師。那么將Mac視為創(chuàng)作者的平臺,,將iOS視為消費者的平臺,,從定義來看,后者的平臺更廣,。但是,,如果用Xcode為Mac開發(fā)的應(yīng)用不能得到關(guān)鍵目標客戶的青睞,那么從長遠來看,,移動平臺也無法生存下去,。
所以蘋果面臨的第一個問題是:先有雞還是先有蛋?Mac還是移動端?要么兩個都要,,要么兩個都不要,,二者是共生關(guān)系。
但是如果一些iOS軟件來到Mac上,,會不會出現(xiàn)用戶對兩者都不買帳的情況呢,?添加了鈴聲就是一個很好的桌面應(yīng)用嗎?這些情況是否會發(fā)生不僅取決于開發(fā)人員,,還取決于蘋果如何聽取和回應(yīng)開發(fā)人員在建立Catalyst和SwiftUI過程中提出的反饋,。
蘋果首席執(zhí)行官蒂姆·庫克此前向用戶和開發(fā)人員保證,蘋果致力于將Mac,、iOS和iPadOS打造為真正獨特的平臺?,F(xiàn)在,蘋果依然如此,。但是,,該公司的用戶和開發(fā)者社區(qū)正在進入未知的領(lǐng)域,較之前,,這些平臺很快會緊密聯(lián)系在一起,。這樣做的有益程度到底如何,,還將拭目以待,!