當前位置:才華齋>計算機>作業系統>

Android作業系統的發展與未來

作業系統 閱讀(2W)

作業系統的新理念/先進技術因素只是一個OS能夠成功的一小部分,還有很多因素需要綜合考慮。路很長,需要一步一步腳踏實地的走,沒有捷徑。本文淺析Android作業系統的發展與未來,僅供參考。

Android作業系統的發展與未來

  背景

作業系統是用來提供一個支援各種應用程式執行的基礎軟體環境。Linux 當前的在各個領域的發展情況如何?到 2016 年底為止,從不同的資料統計來源,我們看到了 Linux 創造在巨型機(佔 99.6%)、伺服器(佔 80%以上)、移動終端(以 Android 為主,佔 87.5%)領域的統治地位,貌似 Linux 已經無處不在了。但 Linux 在其他兩個大的領域還沒有一統天下。在 IoT/Embedded System 等弱裝置/硬實時工控領域,由於特定硬體能力和專用應用的差異性很大,Linux 的通用性和多功能在某種程度上成了負擔或多餘的部分。

當然,目前還沒有一個作業系統在這個領域處於統治地位,各種作業系統在這個領域都有一個適合自己的範圍,但隨著硬體能力的增強和應用對多功能的需求,Linux 的優勢會逐漸凸顯,目前在機器人,車載電子等領域已經有這樣的趨勢了。在 PC/桌面端,我們雖然看到了 MintUbuntu、Fedora、SUSE、Deepin(國內發起)等優秀的桌面 Linux,這些桌面作業系統主要基於 X Windows、KDE/QT、GNOME/GDK 等技術建立視窗環境,但桌面 Linux 的佔有率卻一直處於可有可無的地位,其佔比僅為 1.63%,在這個領域的統治者是 MS Window(佔 88.7%),在 MS Windows 面前,桌面 Linux 就像面對著一堵牆,無法逾越。為什麼上述提到的 Linux 系統都是基於同一個 Linux kernel 但最終的結果卻差別顯著?這裡原因只是在應用層面的技術選擇的不同嗎?

  歷史

移動端的爆發,離不開 Internet 的快速發展。雖然 Apple 在桌面端的軟體和硬體始終不是微軟+Intel 的對手,但 2007 年 iPhone 帶來的觸控操作的新型人機互動體驗(注意,並不在作業系統核心上有新的突破,而主要是便捷的多點觸控式人機互動軟硬體設計的突破)在移動端打開了一個新的視窗,緊接著 Google 的 Android 手機採用開放的生態模式(開放原始碼,建立開放手機聯盟 OHA,即 Open Handset Alliance,與軟體廠商、硬體廠商、運營商、晶片廠商深入合作,尋求共贏)和類似 iPhone 的互動體驗(注意,如果不算 Binder 機制,在作業系統核心上也沒有新的突破)逐漸超過 iPhone/iOS,並在移動端形成了壟斷地位。到 2017 年 4 月,根據分析公司 Statcounter 的研究發現,Android)首次超過 Windows 成為第一大作業系統。

在桌面領域,微軟在 1985 年推出的 Windows 作業系統,加上與 Intel 的 x86 CPU 的完美匹配,形成 Wintel 聯盟,幾十年來,通過 Killer Application —— MS OFFICE 形成了桌面上的壟斷地位,並在推出 Windows NT 後,進一步把觸角延伸到伺服器領域。受制於 Windows 作業系統已經建立起來的強大桌面生態環境,桌面 Linux 和其他桌面作業系統加在一起,在百分比為個位數的市場佔有率上徘徊不前。雖然 iOS 和 Android 在大屏上有比較好的支援,但類似手機操作和使用的平板電腦並沒有帶來新的突破,目前還沒有對桌面端形成威脅。在桌面 Linux 的探索中,除了上述傳統的桌面系統研發外總有一些火花在不經意間閃爍。把移動端的霸主 Android 放到桌面端來挑戰桌面端的霸主 Windows,是否是一個可以探索的思路?下面將介紹一下這方面的一些情況。

對於一般使用者而言,在 PC 上玩 Android 應用,是一個很有意思的想法,包括現在在 PC 上還出現了很多定製 Android 硬體模擬器(如 BlueStacks 等),方便使用者在 PC 上玩各種 Android 遊戲和移動應用。於是有 Hacker 開始考慮,為什麼不能直接在 PC 上執行 Android 呢?在 2009 年,Yi Sun 開始了把 Android 移植到 x86-PC 上的嘗試,並基於 Android 1.6 推出了 Android-x86 1.6,並在後來持續跟隨 Android 的發展步伐,形成了 Android-x86 社群,目前正在開發基於 Android 7.x 的 Android-x86 7.x,當前主要負責人是黃志偉(同方公司資深工程師),對 Android-x86 系統的定位是 Android 正對 x86-PC 的 BSP 部分,希望有更多的愛好者能夠在 Android-x86 的基礎上擴充套件 Android 框架,讓 Android 能桌面 PC 上提供方便的使用環境。

2013 年,Tieto 公司提出了在手機上實現類是 PC 多視窗顯示的想法,並展示了基於 Android 4.2/4.4 的多視窗支援技術方案,這個擴充套件原型系統可執行在 Nexus7 手機上和 Android 硬體模擬器上,且 Tieto 公司進一步把相關程式碼開源,並放到了_for_android。至此,我們知道,通過對 Android Framework 進行擴充套件,是可以象其他桌面作業系統一樣,在大螢幕上,支援以多視窗方式執行多個應用。與 Linux/Window 桌面作業系統不同的是,在其上執行的是數量遠大於前者的移動端 Android 應用,與前者的應用生態完全不同。

來自 Google 的工程師周哲、高恆、陸韻晟在實現財務自由後,並沒有停止對技術的探求。他們一直在思考一個問題:很多事情智慧手機就能搞定,但你為什麼還需要一臺筆記本?他們認為在當前的年代,移動應用的開發遠遠超越了 PC,所以你不需要帶各種各樣的裝置,而是有一個裝置把所有問題給解決了。2014 年 1 月,他們建立了技德(Jide)科技公司,並在 2015 年初推出了 Remix OS —— 它是基於 AOSP 開發的深度定製作業系統,主要以 PC/膝上型電腦(基於 ARM/x86)、二合一平板電腦、一體機、智慧大屏顯示器為載體,實現了一個類似桌面作業系統的多視窗 GUI 介面,能夠在一個大螢幕中呈現和方便地執行多個不同的 Android 應用。並且技德公司還推出了執行 Remix OS 的膝上型電腦、平板電腦、迷你(mini)PC 等多種硬體形態。

2014 年 12 月,來自國內瀏覽器 —— 世界之窗的創始團隊以創始人謝震宇為首,在經歷了 360 公司收購後,也不安於現狀,跳出 360 公司,成立了超卓科技公司,他們也看到了 Android 大屏化的潛在商業前景,從開發應用出發,首先推出了基於 Android 的超卓檔案管理器、星塵網路瀏覽器、超卓文字編輯器等,並在 2015 年 1 月推出了 Phoenix OS Beta 版,並與國內多家硬體廠商合作(聯想、TCL、五元素、昂達等),在相關硬體上安裝 Phoenix OS。Phoenix OS 與 Remix OS 類似,也是一個基於 Android 的桌面 PC 系統,兩者在功能上的差異不大,主要體現在風格的差異性上,其最新版本已經建立在 Andriod 7.1 基礎上。超卓科技希望在輕辦公屬性的 Phoenix OS 系統展現其新的亮點。

2014 年到 2015 年期間,同方公司和一銘軟體公司各自通過前期調研,都認為在國內桌面作業系統方面,需要有新的形態出現,看好 Android 應用的豐富型別與龐大數量而形成的強大生態,認為把 Android 進行桌面化改造是實現桌面作業系統的可行方案。在 2015 年下半年,同方公司和一銘軟體公司先後找到清華大學計算機系的陳渝副教授,希望開展技術合作,探索 Android 桌面化的技術可行性。經過技術可行性分析,對 Android-x86, Tieto 等開源軟體的理解,三方初步認為技術上是可以嘗試的。於是在 2015 年底成立了清華大學-同方股份有限公司計算機系統結構聯合研究中心,三方一起開始了 OPENTHOS 系統的研發,後續 Android-x86 社群、北京大學、北京工業大學、西安郵電大學、南開大學也參加了相關重要研發工作,還得到了技德、超卓、Intel 工程師的技術幫助。在 OPENTHOS 系統的開發過程中,首先基於 Android-x86 5.1 和 Tieto multiwin 擴充套件,實現了類似 Remix OS 和 Phoenix OS 的多視窗桌面 Android 系統原型,在 2017 年 3 月釋出了 OPENTHOS-1.0-RC1 版本,所有原始碼開放在。

為何 Google 不直接讓 Android 跑在 PC 上呢?雖然沒有得到 Google 的官方確認,但大家知道 Google 在桌面端(以膝上型電腦為主要硬體載體)有一個基於 Web Browser 的 OS – ChromeOS,與 Android OS 具有不同的定位,介面是 Browser,執行的軟體主體在雲上,這符合 Google 與云為核心的戰略發展方向,但 ChromeOS 沒有 Android 發展得順利,沒有形成廣泛的基於 HTML5 的應用生態。目前二者誰也吃不了誰,不過最近 ChromeOS 已經添加了 Android 支援層,可以讓 Android App 直接執行在 ChromeOS 的介面上。且 Android OS 在 6.x 後,也逐步添加了多視窗的支援,只是相對與上述三個多視窗擴充套件的 Android 系統而言,還略顯簡單了一些。但這並不表示 Google 沒有實力讓 Android 直接在 PC 上執行,且讓 Android 具有更加完善的多視窗能力。

  分析

1. 技術分析

1.1 定位

上述介紹的 Android-x86、Remix OS、Phoenix OS、OPENTHOS 軟體系統都是基於 Android 的 AOSP(包括了面向 Android 的 Linux Kernel)來完成的。Android-x86 側重在 Linux Kernel 的驅動(如 GPU driver 等),HAL 層面的硬體適配軟體(如 MESA OpenGL 圖形庫,鍵盤/滑鼠相關的庫),系統啟動支援(UEFI/Legacy BIOS 支援),基本不涉及 AOSP 中與硬體無關的 Android Framework 層、dalvik/ART VM 層等。由於 AOSP 4.4 以後有對 x86/x86-64 的很好的官方支援,所以,把 AOSP 移植到 x86-PC 平臺的難度也比基於 AOSP-4.4 以前版本要容易一些。而 Remix OS、Phoenix OS、OPNENTHOS 主要的改進集中在 Android Framework 層,通過擴充套件,實現對鍵盤/滑鼠的有效桌面化支援,多視窗支援等。

從對 AOSP 中 Android Framework 的內部分析來看,Android Framework 架構本身對實現基本的多視窗支援是有預見的,在相關資料結構和程式碼邏輯上已經有對應的基本支援了。這也使得擴充套件 Android 多視窗的難度降低,所改動的核心程式碼在幾千行的範圍,主要修改的程式碼量估計在 1~2 萬行程式碼範圍內(這裡主要基於開源的 OPENTHOS 來分析),相對於 AOSP 的龐大程式碼量而言,這是一個很小的範圍了。所以,從技術上看,當前的 Android-x86, Remix OS、Phoenix OS、OPNENTHOS 應該都屬於一個 Android 的有限擴充套件實現,不算是一個全新的作業系統。且 Google 沒有把 Android 擴充套件到桌面,並不是沒有這個技術實力(其實 Android-6.x 已經有平鋪式多視窗的探索性的支援,在 Android-7.x 已進一步有堆疊式多視窗的支援),而是由於 Google 同時還有面向未來的 Chrome OS 的存在,阻礙了 Android 桌面化的發展程序。

當前 Android 的移動應用生態由於其使用方式,使用習慣等原因,與桌面傳統方式和應用特點有較大差異,並不能代替已有 Windows 的生態環境,但確實存在代替的可能性了。目前能夠發起挑戰的,應該還是隻有 Google 公司。在當前桌面的硬體形態,互動方式,典型應用沒有出現大的變化的情況下,如果認為 Remix OS、Phoenix OS、OPENTHOS 等已經具有挑戰桌面霸主 Windows 作業系統,這就有些高估了自身。因為一個通用作業系統能夠挑戰(甚至戰勝)另外一個通用作業系統的因素有很多,作業系統自身的技術因素只是其中的一個部分,而搶佔先機,應用/開發生態,應用需求,廠商實力,使用者認可度等綜合因素的比重遠大於技術因素。所以,Android-x86、Remix OS、Phoenix OS、OPNENTHOS 如果能用在一些還沒有形成壟斷的環境,沒有成熟的應用生態的領域,也許是其生存的地方。

1.2 特點

Android-x86 的特點主要體現在讓 Android 直接支援在膝上型電腦/PC 上,且剔除了大部分底層私有協議的軟體模組,用開源軟體進行了替換。Remix OS、Phoenix OS、OPNENTHOS 的特點主要體現在支援多視窗,適配面向鍵盤滑鼠的人機互動模式,讓典型 Android 應用更貼近傳統桌面應用的展現形式。另外,OPENTHOS 比較獨特的地方包括:

一、基於開放和開源模式的協作方式和自研自用的研發方式;

二、將 Android 應用和生態直接引入到以桌面 PC 為代表的大屏互動式裝置中,且讓已有 Linux 應用和服務可以在 Android 系統中無縫執行,並能與 Android 應用直接互通。這其實是典型的學校/工程師文化(即 homebrew,自產自用)帶來的,在開發 OPENTHOS 過程中,大家覺得開發者應該首先使用自己開發的 OPENTHOS。但這發現了一個比較困難的問題,部分應用開發者習慣用 Android Studio 開發應用,但開發者的 Android Studio 執行在 Linux 環境中,無法執行在基於 Android 的 OPENTHOS 中。

於是陳渝老師和他的學生田博開始了讓 Android Studio 執行在 Android 中的設計與實現。大致技術路線是:採用 Container 技術來同時支援 Android 應用和 Linux 應用的 Kernel 執行環境;並通過讓 X Windows 系統執行在 Wayland 系統上,修改 Wayland 系統,讓 Wayland 系統能夠執行在 Android 的 GUI 視窗系統中。經過幾個月的努力,不光是 Android Studio,包括 Firefox Browser、WPS Office、Video Player、OpenGL Game Engine 都能跑在 OPENTHOS(Android)上了。另外,西安郵電大學的陳莉君老師和她的學生何興鵬、陶申榮基於 proot(使用者空間實現的 chroot)開源軟體,把 Linux 環境下的 CUPS 列印系統對接到 OPENTHOS 中,使得在 Android 環境下可以方便地使用 Linux 的本地/網路列印支援。一銘公司的陳剛工程師對 Android 多視窗的移植和適配做出了主要的貢獻,北京大學的荊琦老師和她的學生馮傑等把多視窗支援一升級到了 Android-6.0,北京工業大學的王 丹老師和她的學生羅浩等完成了 Android 多視窗的移植改進等。

2. 非技術分析

2.1 風險

一方面,如果在桌面領域沒有新的應用需求,新的互動方式,新的硬體形態,僅僅把 Android App 執行在桌面上,即使加上鍵盤滑鼠支援和多視窗支援,並不能改變當前的桌面生態環境,無法撼動微軟的霸主地位。此外,有人認為,我們可以先跟著 Google,搭順風車,做一定的改進或定製,然後自己羽翼豐滿後,再甩開 Google,自立門戶。這種思路在國內外已經有過失敗的嘗試,比如中移動等支援下的`播思通訊,國外的 CyanogenMod 等。他們低估了脫離 Gooogle 苦心經營的應用生態和跟進 Android 開發快速迭代等的難度。還有,Android 來源於 Google,基於 Android 開發的系統如果不想按照 Google 的要求和限制做,則會承擔法律風險,且如果沒有給 Google 看到潛在的好處,則很難得到 Google 的支援。

這裡引用魏永明“‘自主’作業系統——為什麼及如何”一文的內容:Google 在開發 Android,尤其是 Dalvik 虛擬機器以及 Java 類庫的過程中,肯定積累了大量專利,而這些專利是凌駕於軟體的著作權和許可證之上的。也就是說,如果你基於現有的 Android 派生了一個分支,要想將執行有這個 Android 派生版本的軟體放到自己的手機裡邊銷售,Google 馬上可以拿出專利大棒來限制你。當前,Google 尚未拿出專利大棒來限制各種派生於 Android 的系統。拿阿里 yunOS 和谷歌最近的爭論當中來看,Google 也只是說 yunOS 導致 Android 不相容。但一旦有廠商真的使用了,Google 馬上就會拿出專利大棒,這將毫無疑問。

2.2 自主

上述面向桌面的 Andorid 作業系統目前都沒有強調自主或自主可控,但不排除以後有其他人或單位會提出基於 Android 改造的作業系統是自主或自主可控的。這裡引用魏永明“‘自主’作業系統——為什麼及如何”一文的內容:

只是在已有的開源作業系統之上加了一層皮。比如各種基於 Android 的第三方 ROM,比如 MIUI、Flemy 等。這種作業系統僅僅在 UI/UE 上做了一些工作,就如同一個人換了一身衣服那樣,實質上這個人不會因為換了一身衣服而從張三改叫成李四。

修改了已有開源作業系統的內部程式碼,做了一些優化或者去掉了別人的一些東西,添加了一些自己的內容。比如 yunOS 就屬於這種,或者哪些號稱深度定製的 Android 系統也屬此類。這種做法如同整容,的確動了些刀子,甚至改變了性別,但人還是那人,改了名字或性別也還是那人。

 發展方向

做一個軟體系統,如果是跟在已經取得很大領先優勢的已有其他軟體系統後面,採用模仿或非根本性創新,是無法形成健康的應用生態,是無法超越已有其他軟體系統的。站在通用桌面領域,比如上述系統(包括現在的桌面 Linux)想直接與 MS Windows/Google Android 爭奪已有市場,幾乎沒有成功的可能。Windows 比其他桌面系統早了十幾年的技術積累,早已形成了相對封閉的 Windows 桌面應用生態,這一點 Andorid 也類似。所以,上述系統也許在一些有沒被 Windows/Android 覆蓋的應用需求且還沒形成壟斷的專用領域,比如車載電子、虛擬雲桌面、教育培訓、數字醫療、工業控制、移動終端辦公、機器人、自然互動、人工智慧、特定硬體等,找到匹配上述系統的關鍵應用,找到這些領域的 Killer Application,形成上述系統存在的價值(剛需),並形成新的生態環境。

另外,Chrome OS/Firefox OS/H5OS/Elastos 等為網路而生的 OS 代表了一個未來面向與人互動的桌面/終端/IoT 作業系統的方向,可以實現網路應用和本地應用無縫銜接,可像“水”一樣實現資料和控制的按需流動。但這只是未來的技術方向,還有很多技術挑戰並沒有解決,比如 Javascript、HTML5 在語言層面缺乏高效性,安全性和可擴充套件性,WebAssembly 語言已經在嘗試解決 JavaScript 的問題;Browser 的介面與核心並沒有建立好全面支援本地桌面應用的完善基礎架構,且本地應用和網路應用無法有效互聯互通互操作,作業系統核心的程序機制對網路應用的元件化和保證安全的隨意遷移形成了阻礙,Linux Kernel 越來越複雜和龐大使得其逐步變得僵化,Linux Kernel 和底層系統缺少對上層框架(Android 框架、傳統 Linux 應用框架、Browser 介面框架等)的統一和靈活可定製的支援。這些需要感興趣的人去深入探索和解決。但前面也提到了,作業系統的新理念/先進技術因素只是一個 OS 能夠成功的一小部分,還有很多因素需要綜合考慮。路很長,需要一步一步腳踏實地的走,沒有捷徑。