在電腦上裝安卓摸魚,你要感謝一位中國工程師

在電腦上裝安卓摸魚,你要感謝一位中國工程師

點選載入圖片

2000年10月,一位復旦大學的老師辭去教職,走進

英特爾

在上海的辦公室。十多年後,他帶領英特爾上海團隊研發出的關鍵技術,讓我們可以用裝有x86處理器的個人電腦,執行原本只能在ARM架構上跑的Android系統。

這一技術在市面上絕大多數的“安卓模擬器”裡都能見到。2021年,以該技術為基礎,英特爾聯手

微軟

,宣佈在即將問世的

Windows

11上實現原生相容

安卓應用

在本文中,社長將帶你瞭解這位英特爾中國工程師的經歷和創造,回顧這項溝通Windows與Android的關鍵技術是如何誕生的,以及在Windows11裡面它將怎樣影響我們未來的生活。

Windows跑安卓的關鍵技術,和領銜開發的中國人

北京時間6月25日,在Windows11釋出會上,微軟Windows部門負責人帕諾斯·帕奈宣佈,Windows11將會支援在微軟商店中直接下載和安裝Android應用。此後,微軟內部人士又確認使用者可以自行安裝APK格式的安裝包,也就是“旁載入”安卓應用。

演示以抖音海外版(TikTok)作為例子,展示了無需安裝額外的模擬器,Android應用將以標準視窗模式執行,併兼容滑鼠和觸控手勢,其執行效率也將有保證,不會卡頓。

這次相容Android應用,微軟是跟英特爾合作,採用了英特爾名為“Bridge”的新技術。會後,英特爾很快就出了一篇新聞稿,來更詳細的解釋Bridge的內涵。

“英特爾Bridge技術是一種執行時後期編譯器(runtimepost-compiler),能夠讓移動應用在基於x86的裝置上以‘原生應用’形態執行,包括在Windows上執行。透過將領先的CPU核心、圖形顯示卡技術、人工智慧加速器、圖形處理器等元件整合到單個經過驗證的解決方案中,英特爾的多架構XPU策略可為合適的工作負載提供合適的引擎。”

說白了,這個Bridge就是起到了“安卓模擬器”或“虛擬機器”的作用,但因為原生執行的緣故,效率會更高。而且攝像頭、網路、感測器等都可以直接呼叫本機硬體,避免卡頓或者相容性問題。

英特爾Bridge與華為“方舟編譯器”以及蘋果為M1晶片準備的“Rosetta2”性質相同,但與Rosetta2的編譯方向相反,後者是從x86編譯到ARM架構。

Windows11是第一個採用英特爾Bridge技術的產品,但未來Bridge會擴充套件到Windows之外。至於AMD使用者也不用擔心,微軟表示Bridge技術在所有的x86處理器上都適用。

Bridge並非從天而降,諸多開發者一看到就覺得十分眼熟。這讓他們想起了英特爾Houdini技術,那是將原本基於ARM架構開發的Android作業系統移植到x86架構的關鍵部件。

Houdini於2014年推出,是英特爾嘗試踏足移動處理器領域,尋求x86手機處理器與安卓融合的產物。當時它侷限於安卓應用在x86平臺的執行,而現在的Bridge則強調其他平臺向x86平臺的遷移。

在電腦上裝安卓摸魚,你要感謝一位中國工程師

點選載入圖片

更值得一提的是,Houdini是英特爾中國團隊獨立開發的。它從專案發起,概念驗證,原型到最後的產品化,都由英特爾位於上海的研發團隊完成。

引領Houdini專案開發的靈魂人物是李劍慧博士,他是英特爾架構、圖形和軟體事業部的首席工程師,負責領導深度學習框架整合和工作負載最佳化工作。如英特爾官網介紹:

“他曾是二進位制翻譯和JIT編譯器方面的軟體開發人員,領導開發了Houdini。李劍慧畢業於復旦大學,獲得了計算機科學博士學位。他在二進位制翻譯和實際應用最佳化方面擁有21項美國專利。”

李劍慧早年是復旦大學並行處理研究所講師,2000年10月加盟英特爾軟體解決方案事業部,一直在上海SSG研發團隊工作,為IA-32&執行層產品核心開發人員。

資料顯示,Houdini技術成功解決了英特爾安卓平臺上的應用程式相容性問題,也讓李劍慧獲得了“英特爾成就獎”。

初到英特爾,李劍慧接到的第一個專案是“二進位制編譯”,負責質檢、軟體效能開發和除錯等基礎工作,也到客戶公司駐場。為幫助SAP做Java編譯器,李劍慧在SAP總部“駐紮”了兩個多月,“SAP的工作人員都以為我是他們的人了。”

這段經歷讓他從專案小組的普通工程師提升為專案經理。此後的2005-2008年,他進入XML專案和開發團隊,並據此進一步發展為軟體架構師。李劍慧向各大軟體廠商輸送軟體開發的管理技術,與本土的相關的軟體園專案的合作伙伴分享團隊建設、專案管理方面的技術。

2010年英特爾中國25週年時,他也獲得了“英特爾年度最佳員工獎”。官方形容他是“熱衷於培養人才的軟體經理,大家都親切地稱他為‘李老師’。”

李劍慧提到,一次自己提交月度報告因不夠詳盡受到上司批評,這件小事對他的思維方式產生了很大影響。他意識到,工作的重要性不在於花了多長時間,而在於其結果會產生怎樣的影響,這也就是英特爾倡導的“結果導向”價值觀。

而做出Houdini並在全球範圍採用,無疑是諸多“結果導向”中至關重要的一項成果,讓李劍慧走到英特爾“首席工程師”的位置上。根據LinkedIn資訊,他現在常駐位於聖何塞的英特爾總部。

在電腦上裝安卓摸魚,你要感謝一位中國工程師

點選載入圖片

李劍慧在GitHub的頭像

英特爾當初為什麼要研發Houdini

在我們注意不到的地方,Houdini可能已經悄然派上了用場。有人提到,“實際各個版本的安卓模擬器裡都有Houdini,只是不是官方渠道得到的。”

但用於模擬器並非英特爾開發Houdini的本意。事實上,名為libhoudini。so的模組存在於每一臺搭載英特爾x86處理器的Android手機裡,負責把ARM原生庫動態翻譯成x86指令集,來實現相容執行。

……等等?還有英特爾晶片的安卓手機?

當然有,但這是一個悲劇。英特爾自21世紀初就著手為移動裝置製造CPU,但它最終賣掉了與手機相關的業務,蹉跎了十多年光陰。

2000年代初,在當時的CEO巴雷特(CraigBarrett)領導下,英特爾開始制定製造手機晶片等的移動戰略。當時,英特爾為功能手機開發基於ARM架構的StrongARM處理器,與德州儀器的OMAP處理器競爭。

在電腦上裝安卓摸魚,你要感謝一位中國工程師

點選載入圖片

在2005年,巴雷特堅稱英特爾的移動晶片很受手機制造商的歡迎。但其繼任者歐德寧(PaulOtellini)認為,英特爾的核心業務是個人電腦市場,需要砍掉不重要的分支,以對付來自AMD的競爭壓力。

2006年歐德寧上任後的“兩板斧”,一是大力促成了蘋果從PowerPC轉投英特爾陣營,二是以6億美元的價格將StrongARM資產出售給美滿(Marvell)公司。

後來,iPhone和iPad的發售改變了英特爾對智慧手機的看法。特別是iPad在2010年釋出後,開始損害個人電腦的銷量,而這些裝置不使用x86晶片。

英特爾開始倉促修改最初為“上網本”設計的低功耗處理器凌動(Atom),以打造新的上網終端“移動網際網路裝置”(MID)。但這玩意兒仍然是PC思維,想要脫離滑鼠鍵盤,純用手操作仍有難度。

在電腦上裝安卓摸魚,你要感謝一位中國工程師

點選載入圖片

由於2006-08年高速移動網際網路仍未普及,資費高昂,英特爾無法感知智慧手機市場的增長。有分析師認為“個人電腦就是英特爾的世界觀”。

2010年,英特爾做出Moorestown晶片,但對智慧手機來說太耗電了;此後出了改款Medfield,首款搭載的智慧手機是2012年1月釋出的聯想K800,隨後是在印度釋出的XoloX900與法國電信的貼牌機。

在電腦上裝安卓摸魚,你要感謝一位中國工程師

點選載入圖片

這些手機執行著Android系統,但在此之前英特爾又走了一段彎路。為了躲開Android,英特爾先是搞了基於Linux的Moblin,2010年與諾基亞Maemo合併為Meego;這個系統此後又轉到三星手裡變成了Tizen。直到2011年,英特爾才下定決心選擇安卓,但為時已晚。

與此同時,英特爾對小型裝置晶片的開發重心放在了低功耗上面,而不是改善效能。這本來是因為ARM主打低能耗,但區域性改善並不能追上根本性的能效比差異,只是稍微延長了此後“超極本”的續航時間。

到2014年,接替歐德寧的科茲安尼克(BrianKrzanich)決定投入鉅額補貼實現凌動出貨4000萬片的目標。當年英特爾共出貨4600萬片凌動晶片,主要投向平板電腦市場,但導致了鉅額虧損。科茲安尼克決定不再為x86手機重複補貼政策。這基本標誌著英特爾在智慧手機晶片市場的全面潰敗。

隨著手機晶片製程工藝日益進取,跟ARM+臺積電的組合相比,英特爾毫無還手之力。與此同時,各檔次晶片的成本和售價也進入了下降區間。2019年,英特爾最後將5G調變解調器業務賣給了蘋果,從而徹底退出了手機晶片市場。根據Recode的報道,英特爾在移動裝置晶片製造領域投入100億美元(截止2016年),結果一無所獲。

在此之前,它的最後一款x86安卓手機產品在2018年MWC上亮相,定位於低端機型,面向拉美及非洲銷售。在MWC現場,數碼編輯頂著展臺工作人員的壓力,堅持了20分鐘才勉強完成了一個性能測試,同時把機器變成了暖手寶。

在電腦上裝安卓摸魚,你要感謝一位中國工程師

點選載入圖片

在電腦上裝安卓摸魚,你要感謝一位中國工程師

點選載入圖片

綜合來看,對PC的路徑依賴,在切換到手機晶片賽道、選擇Android作業系統等關鍵決策上的反覆和短視,以及最佳化策略上的舉棋不定,共同造就了英特爾x86手機晶片戰略的破產。

由於英特爾在2010年代初最終決定切換到相容Android,這就意味著必須解決ARM指令集到x86晶片的轉譯問題,Houdini就是在這個背景下開始研發的。在2010年的採訪中提到,那時李劍慧“又回過頭來繼續做二進位制編譯專案”,推測此時他們的工作已經很接近研發Houdini的範圍了。

從模擬器走向原生相容

原本為Androidx86版本研發的Houdini並未因為該版系統的低覆蓋率而被雪藏,隨著5G推進,Houdini被用於日漸成熟的雲遊戲和AI領域。

2018年“英特爾與騰訊公司合作,利用英特爾至強伺服器的晶片處理能力,配合英特爾IrisPro核心顯示卡獨有的雲端渲染與影片轉碼技術,以及Houdini指令翻譯軟體包,能夠實現使用者在使用App的過程中實時解碼,嚴格控制雲遊戲保持低延遲的流暢表現,有效提升使用者體驗。”

另外,Houdini“可以在基於人工智慧的平臺上透明地執行AndroidARM應用,帶來出色的使用者體驗”。

不過就像上面提到的那樣,Houdini事實上應用最廣泛的地方是PC安卓模擬器,市面上絕大部分的模擬器都是基於VirtualBox+Androidx86+Houdini方案。

在電腦上裝安卓摸魚,你要感謝一位中國工程師

點選載入圖片

雖然安卓應用當中有專屬的美團、抖音等消費和娛樂工具,以及Protake、掃描全能王等生產力工具,但社長覺得大部分人裝安卓模擬器的最主要用途還是……遊戲。

由於電腦具備大屏鍵鼠操控優勢,難免對線上對戰遊戲的公平性產生影響。所以,不少遊戲會用一些技術手段判斷是否處於模擬器中執行。其中一個簡便易行的辦法就是檢視系統目錄是否帶有libhoudini。so這個檔案。國外有些“比較正經的”模擬器比如Genymotion都會保留該檔案,而國內開發的模擬器品種,有的會為了對抗反作弊措施而設法隱藏該檔案。

在技術論壇上有人提到,某些優秀模擬器會讓遊戲獲取的裝置資訊顯示為arm而不是x86,還會分配一個虛假的ARM處理器型號資訊,欺騙遊戲認為自己執行在一個ARM環境中。

為此,遊戲開發者不得不長期採集使用電量、WIFI訊號、蜂窩訊號、陀螺儀等動態變化特徵,才能判斷是否執行在模擬器中。“如某FPS手遊,新玩家進入後,分配到的遊戲區不是模擬器專用遊戲區,而當進入第二局遊戲的時候,就被分配到了模擬器專區。”

——這也許就是為什麼包括大型遊戲在內,很多安卓應用都想方設法收集那些儘可能多的,看起來也許用不上的個人資訊。

可以預計,基於英特爾Bridge的Windows11安卓子系統,在給遊戲和其它應用輸送裝置資訊時會“誠實”地顯示處於PC環境。

然而,多屏協同已經是肉眼可見的未來趨勢,華為在官宣“鴻蒙”時已經演示了將小屏安卓遊戲投射到同一家庭的平板上,以繼續“作弊”的功能。

與此同時,安卓應用自身也在不斷最佳化,為觸屏、鍵鼠、摺疊屏等多種使用環境的隨意切換創造條件。舉個例子,訊飛輸入法最近的一次更新,讓外接藍芽鍵盤以後的表現,就像是電腦上的輸入法一樣,也可以使用ctrl+c和ctrl+v快捷鍵。

在電腦上裝安卓摸魚,你要感謝一位中國工程師

點選載入圖片

更不用說,以微軟XBOXGamePass、谷歌Stadia、英偉達GeForceNow為代表的新一代流式傳輸的“雲遊戲”,正隨著5G和高速家庭寬頻的普及而具備基礎的可用性,將同一種遊戲體驗帶到從手機、平板、PC到電視的所有螢幕,甚至多次嘗試“入侵”蘋果封閉的應用商店生態。

2020年9月,蘋果宣佈改變其AppStore規則,允許遊戲流媒體服務上架,不過附加要求每一款在雲遊戲平臺內玩的遊戲,本身也應該單獨提交蘋果商店稽核。這是諸多雲遊戲廠商苦心爭取的結果,而手握XBOXGamePass的微軟自身就是其中最大的遊說者之一。

所以,原本人們會擔心安卓完全為觸屏設計的介面在電腦桌面水土不服,現在這個問題也在解決中。可能這也是Windows11選在當下相容安卓應用的一個原因。

谷歌宣佈替代APK安裝包是針對微軟嗎?

另一邊,安卓自身也在不斷演化。APK包為基礎的海量應用生態是安卓一手創造的,所以谷歌其實也並不想坐等微軟或別的對手發展到足以形成威脅的程度。

幾乎在Windows11釋出的同一時間,谷歌Play商店決定,將應用分發格式從APK安裝包逐步過渡到谷歌自有的AAB格式。這是谷歌挾統治地位以令諸侯,對微軟染指APK應用生態的反制嗎?

當然,一種政策的部署自然需要其時間,這個AAB絕不是一夜之間開發完成的,而是已經推行了很久。它的本來目的是為了最佳化安裝過程,減少下載應用消耗的流量和儲存空間。

2018年,谷歌推出了一種分發安卓應用程式的新方法,稱為安卓應用程式捆綁包(Androidappbundles,AAB)。它不表現為一個字尾名為AAB的單獨安裝包,而是按照處理器型號、螢幕大小、解析度、核心版本等不同,按需揀選和下載元件,在安裝的當時現場“組裝”為一個臨時的安裝包。

常規的APK檔案包含用於每一種可能的螢幕尺寸和處理器架構的資原始檔,但AAB使得Play商店儲存在手機上的安裝包,只有適合這臺手機的特定架構、螢幕大小的資原始檔。

在電腦上裝安卓摸魚,你要感謝一位中國工程師

點選載入圖片

這種按需下載資源,再組裝起來的方法有如下好處:

AAB平均比APK小15%,因此下載速度更快。

AAB需要Play應用簽名,使用谷歌的安全基礎設施保護應用簽名的完整性。

對於不同裝置需要提供定製版本的情形,Play功能交付使開發人員能夠自定義某些裝置上下載應用時,會傳送哪些功能模組。

另一個僅限AAB的功能是,對於遊戲內貼圖、動畫等應用內的大型資產,使用者同樣可以只獲得適合其裝置、螢幕尺寸的版本,而不會浪費空間或頻寬。

有國內報道顯示,華為在鴻蒙2。0系統中對一些應用做了專門最佳化,其最佳化邏輯可能也是減少用於相容其它機型的資原始檔。“有知乎使用者發現,2。0。0。053版本的鴻蒙系統,內建了三個鴻蒙App,包括央視影音、優酷和新浪新聞。而鴻蒙版央視影音只有1。35MB,比安卓版本要小很多。”

在谷歌宣佈AAB逐步替代APK上架商店之前,一些流行的應用——包括Netflix、Chrome等——早已採用了這項新技術,使得它們無法上傳到APKMirror、APKPure這樣的第三方應用商店(也不能上傳到華為的AppGallery)。

經過一年多的開發,APKMirror提供了一個可以組裝AAB安裝包的第三方應用安裝器APKMirrorInstaller。它如同一個檔案管理器,由使用者選擇檔案手動安裝,所以可以不違反谷歌Play商店的準則。

從8月開始,谷歌Play商店已經要求開發者釋出更新時使用較新的AAB格式。谷歌解釋說,現在有超過100萬個應用使用AAB,包括Play排名前1000位的應用和遊戲中的大多數,如Adobe、Duolingo、Gameloft、Netflix、Twitter等廠家。

資深微軟分析師PaulThurrott認為,谷歌改用AAB顯然是針對包含亞馬遜Fire在內的所有其他安卓商店,而不是Windows;但是,宣佈Windows11能支援APK包,可能會加速谷歌推動AAB的決定。

當然,總體上谷歌的改動無傷大雅。畢竟,APK是最知名的安卓應用安裝格式,並且已經存在了很長時間。APK是所有安卓及魔改版系統都相容的最大公約數,加上存量眾多的中國“特供版”安卓應用商店,未來這一格式被替代的可能性微乎其微。

今後的應用就不再有“電腦版”了?

微軟納入疲弱的亞馬遜Fire商店,以上架受信任的安卓應用。但鑑於Win11可以旁載入安卓應用,即使不想上架商店,開發者也可以提供APK包作為讓Windows使用者直接體驗的手段。

不過,旁載入應用的一個問題是為盜版、破解版大開方便之門,而另一個問題是安全——目前的機制下,Linux和Android子系統相當於執行在Hyper-V平臺上的“虛擬機器”,但不同於真正的虛擬機器,它們跟主系統並沒有徹底隔離。如果使用者的安全意識不足,為安卓應用開放了過多許可權,就有風險存在。以往有些勒索病毒可以穿透虛擬機器,感染儲存在主機上的文件。

這樣一來,微軟需要認真地考慮在中國區跟哪個安卓應用市場合作——說不準是應用寶?可以想見,Windows11可以更進一步吸引更多海外App跟中國一樣,拋棄對谷歌GMS的依賴。

Windows11直接相容安卓應用也許會引起很多連鎖反應,其中最誇張的一種猜測是,有的開發者可能會就此轉向只開發一次iOS和安卓應用,放棄對PC原生版的開發。

從上古Java到Flash,再到Electron、React、Flatter等框架,“寫一次就到處執行”的信仰之火從不熄滅,但只是越發微弱。開發者逐漸體驗到,在一個平臺上,如果能原生執行相關的應用,其效率一定是更高的。

現代跨平臺開發的主要方式是HTML,也包括小程式等各種變種,在封裝之後加入了本地快取能力而成。但網頁的顯示效率取決於手機/電腦上的WebView控制元件,它往往要吃掉很多資源,而且導致卡頓。

輕芒創始人王俊煜曾對航通社提到,輕芒雜誌App的首頁作為一個無限滾動的頁面,原本是選用原生與網頁的混合模式開發,但效率非常低,所以最後改成了純原生樣式。而Windows11當中的微軟商店也進行了類似的修改,從Win10時代的HTML/CSS編寫改成了微軟原生的XAML語言,所以頁面滾動更順滑了。

所以,隨著Mac支援iOS應用,Windows支援安卓應用,開發者是否會逐漸放棄開發PC/Mac版本?

這是否會成為一個趨勢,還要看Bridge的具體執行效果如何,是還會卡頓,還是如絲般順滑。這也要看未來安卓手機、平板、摺疊屏裝置的多點開花,是否呼喚著開發者適配不同大小的螢幕和不同的輸入方式。

現有的跨平臺開發技術,大多面臨著要選相容性,還是選效率和穩定性的難題。可以想見,如果開發者沒必要二選一,他們大多數人會做何選擇。

這也可能是又一次像是漸進式網頁應用(PWA)的失敗嘗試,畢竟從現在看它也有很多可能導致失敗的隱患。但它萬一成了,對未來應用生態的影響,可能遠超出我們現在的想象。

微軟CEO納德拉認為,相容安卓應用對於原本專研安卓開發的人是重大利好。

“透過將安卓應用曝光在超過十億的使用者群中,為構建安卓應用的人創造更多機會,我認為開發者和使用者都會從中受益。”

“在微軟,我們為iOS、安卓、Windows構建應用。這是我們面臨的根本挑戰之一。我們正在努力確保開發人員可以利用盡可能多的通用程式碼庫和雲,但同時,又在每個平臺上是原生的。”

由中國工程師李劍慧領銜,英特爾中國團隊研發的Houdini是Windows11實現其相容安卓應用願景的基礎。不過這並非中國人對跨平臺、跨架構相容所做的唯一貢獻。

航通社之前的文章提到過,深度-統信軟體對UOS/Deepin下的Wine做了大量細緻的工作,使得分支Deepin-wine對部分國產軟體的相容適配程度大為提高。

今年6月20日,麒麟軟體有限公司釋出優麒麟20。04LTSPro版本,首次宣佈支援移動相容環境,也就是在優麒麟桌面上執行Android應用。此前UOS在ARM架構機器上的版本可以執行少部分Android應用,因為不需轉譯。而優麒麟的“麒麟移動執行環境”KMRE與此還有不同。

在電腦上裝安卓摸魚,你要感謝一位中國工程師

點選載入圖片

官方介紹稱,“KMRE不是虛擬機器,而是真正地將Linux和Android作業系統‘合二為一’,透過共用核心,直接使用硬體,同時支援ARM和x86裝置和多種CPU、GPU,更有效解決了顯示效能損耗、多視窗執行、桌面共享、檔案互通等問題。”

KMRE是GoogleArc之外在Linux上執行安卓應用的另一選擇,不再依賴於閉源的Chrome,針對開源驅動的顯示卡,能夠直接訪問硬體,做到零效能損失。

在Linux上執行Android版的騰訊會議時,KMRE可以將電腦上的文件,乃至整個Linux桌面共享給其他參會者。針對大型Android遊戲,還實現了模擬多觸,支援技能鍵、方向鍵的設定,讓使用者可以用滑鼠和鍵盤操作遊戲。

這樣的高度融合需要適配眾多的處理器和顯示卡,在適配工作量大的情況下,為保證產品質量,安卓應用暫時只能透過軟體商店下載,而今後會開放安裝本地APK包。

這幾年,“國產作業系統”或者其它在Windows、安卓、蘋果之外的選擇,正變得越來越實際可用。不論是專為替代系統研發的應用軟體,還是讓新系統相容現有的應用生態,全世界都不是毫無作為,而其中中國人所做的貢獻,顯得尤為突出。

世界上沒有永遠盛開的花,當初某些標準佔據了統治地位,並不意味著永遠如此。曾幾何時,當我們討論起國內所謂自主智慧財產權的作業系統,說到最困難的部分也就是如何搭建應用生態。而借力安卓,並且藉助安卓在PC的大範圍使用,最佳化其針對鍵盤/滑鼠的互動,使其成為電腦上人們常用的應用形態,長遠也會幫助國產系統繞過Windows和macOS兩座堅固的壁壘。

參考資料

相關文章