Android操作系統的發展與未來

操作系統的新理念/先進技術因素只是一個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 能夠成功的一小部分,還有很多因素需要綜合考慮。路很長,需要一步一步腳踏實地的走,沒有捷徑。