Android 系統無法被分支 (fork) 嗎,AOSP 和 GMS 是何關係?

AOSP: Android Open Source Project (AOSP)

GMS: Google Mobile Services 谷歌移動服務

之前看到這個問題

假如 Android 突然不開源了,整個智能設備格局會發生什麼變化?

可是今天看了這篇文章

安卓開源的真相:無法分支

突然有點不太明白Android到底是一個什麼狀況。

想問問各位大拿如何評價後面這篇文章?


它說得很清晰,兩篇文章並不矛盾:

1,AOSP android本身是徹底的自由軟體。

2,Google通過文中所述的辦法掌控Android生態系統,通過OHA,通過預裝gapps的門檻等保證Android的兼容性。當時Acer被迫停止為阿里巴巴製造阿里雲OS(一個加入了阿里巴巴自行設計的虛擬機的Android發行版)時,Andi Rubin的態度(見他的Google Plus帖子)也是如此:我們不喜歡不兼容的Android。


(想想看三星為什麼要拚命搞Tizen,為什麼每個廠家都要用自己的UI,只有內地的Android才能真正擺脫Google的影響力)

3, 請用KiB/MiB/GiB/TiB替代KB/MB/GB/TB 的發展趨勢是,AOSP將會繼續存在,基礎性的更新會包含在其中。Google會將功能性的代碼丟到私有的Gapps裡面。


問題中第二篇文章的原文來自 Ars Technica:

Neither Microsoft, Nokia, nor anyone else should fork Android. It』s unforkable.

這篇文章底下有一位 Google 工程師的評論,完整地回答了這個問題:

http://arstechnica.com/information-technology/2014/02/neither-microsoft-nokia-nor-anyone-else-should-fork-android-its-unforkable/?comments=1post=26199423

總結要點的話,就是

  1. Google沒有,也不會通過閹割 AOSP 把東西挪到 GMS 達到阻止 Android 分支的目的。
  2. 功能要放到 GMS 中是因為這些功能依賴 Google 專有的雲服務,這些功能閉源並需要單獨授權天經地義。GMS 吸納越來越多的東西,是因為從 Location API 到遊戲對戰平臺,越來越多的功能天然地依賴 Google 雲服務。
  3. Google 沒有阻止任何人實現另一套 GMS, 實際上 Android 這種把 AOSP 和 GMS 分開的結構才讓重新實現一套不依賴 Google 的 GMS 成為可能。但這裡面的難度在於,你要想獨立自主不依賴 Google,又要有跟 GMS 那樣豐富的功能,麻煩自己重新實現一套從 Google Maps 到 Drive 的雲服務,你行你上。

若僅討論美國的情況,在我看來 fork Android 的難點不在 Google 在 Android 裡設置了什麼門檻,而在移動設備已經很難離開 Google 的雲服務生存,沒有哪個競爭對手能提供像 Google 這麼完整和強大的雲服務。這點不僅在 Android 世界成立,換個操作系統也一樣 —— 即使強大如 Apple, 要拋開 Google Maps 自己做地圖,結果大家都看到了。


android系統核心仍然是開源的,但現在的問題是,Google開始鼓勵android開發者使用Google的不開源服務,即GMS。

這一點Google當然可以有各種冠冕堂皇的理由來解釋,但造成的一個事實性的結果就是將來越來越多的android應用會是依賴於GMS的。這樣一來,GMS和Google在android生態環境就成了挾應用以令諸侯的地位。換言之雖然AOSP仍然是免費的,但是大多數的應用需要私有的並不免費的GMS才能正常運行,這樣一來無論GMS是不是附加功能或者服務,由於應用的緣故,用戶不得不使用帶有GMS的android系統。

這一幕是多麼的熟悉。

事實上大家是否知道,網銀為什麼一定需要IE瀏覽器呢?

雖然我們不用過分杞人憂天,但是說這個是危言聳聽也是過於樂觀了,GMS目前在android系統中是否不可或缺根本不是問題的關鍵。關鍵是未來會有多少android應用依賴於GMS服務,,這,決定了Google在android生態環境中的話語權。

============================================================

而且Google這個公司很多人對他的印象還停留在很早的那個帶有一點浪漫主義色彩的不作惡的信條上。但事實上是自從退出中國後,尤其在移動平台上,Google排擠異己的手段是越來越過分的,比起微軟當年之作為很多是有過之而無不及。

例如拒絕為Windows Phone操作系統提供某些服務(YouTube和地圖)。蘋果堅決的拋棄谷歌地圖依賴從短期來看有所損失,而長期來看,卻是利大於弊,,,,

在HTML標準上,Google藉助Chrome瀏覽器強勢推行WebP和WebM格式,當然也有很多冠冕堂皇的理由,例如這兩種格式都是開源的,但實際上,谷歌的服務和技術正在互聯網上不斷滲透,這是值得我們警惕的。


我覺得 Android 能否像一個開源軟體一樣 fork, 主要有兩點:

  • 第三方能夠提供與 GMS 足以匹敵的 API, 並最多只需要開發者極小程度的改動.

  • Google 在法律上無法制裁這些 API 提供商.

很顯然兩點都在變得越來越不實際.

Android 原生的位置 API 差不多在 1.5 後沒有變動, 諸如 geo-fence 之類的功能都包含於 GMS 中, 難道要用回 1.0 的才叫「不會閹割 AOSP」?

搜索, 音樂, 簡訊, 相機和照片等, 不需要一一展開了.

連 CyanogenMod 都在發展自有的賬號系統, 是個更好的說明.

而更重要的法律方面, 問題就更多了.

阿里雲的例子已被說爛, Amazon 必須找對 Android 完全沒有企圖的廣達代工 Kindle Fire 也不說了.

但哪怕是 Android 中一個位置 API 的部分, 2011 年 Google 就通過以 Android 兼容性測試要挾那時的 Moto 放棄將 Skyhook 整合於 Droid X 中. How Google controls Android: digging deep into the Skyhook filings 以及 Internal emails reveal Google"s desperation over Skyhook"s Android deal with Motorola

更可怕的是, 雖然 Google 輸給了與 Oracle 的官司, 但這一訴訟的結果, 是確定了 API 是可以受版權保護的: FOSS Patents: Oracle apparently winning Android-Java appeal against Google -- API declaring code copyrightable

哪怕微軟能超過 Amazon 只能做到 Google Maps API v1 水平的位置 API, 完美兼容現有 Android 應用. Google 也完全可以通過法律形式, 以訴訟逼迫對方放棄.

許多人認為 Google 對自己的專有應用沒有強制力, 只是因為國人大部分接觸到的是國內環境, 以及自製/開源的 ROM 開發. 對國內環境沒有影響自不用提, 而如果對開源 ROM 逼迫太緊, 對 Google 自身形象必然造成不小的傷害.

但第三方廠商能夠告訴用戶, 對不起, 如果想用若干 Android 應用, 請到 XXX 下載 Google 應用刷入么?

這大概就像, 假設, Twitter 想通過在中國分發光碟實現人人能訪問 Twitter 一樣可笑.

Google 的幾大武器:

Android 兼容性測試.

Google 強迫所有 OHA 廠商不能做其認為對 Android 生態有害的事情.

接受任何 Google 應用, 即意味著接受從 Gmail 到 Play Store 的全盤 Google 應用.

Android 現在的結構和 OS X 很像, 而且是跑在接近 OS X 的路子上的. 越來越多的應用將無法離開閉源/專有組件, 直到開源部分對終端用戶不再有意義, 而開源部分也只能成為 hobbyist 的玩具. —— Darwin 還能輕鬆移植到 Nokia N900, TouchPad 等一堆設備呢.


就中國的情況來說,由於 GMS 什麼影響力都沒有,所以第二篇文章不合國情。簡單的理解為每個中國廠商都可以隨意 fork 就好了。

就國外的情況來看,略有一點點不同。當然這點不同遠遠沒有大家想像的那麼大,此說法接近危言聳聽。關鍵在於 GMS 究竟多大程度上造成不兼容。GMS 最主要影響的只是地圖相關的 API ,對這個問題你完全可以針對兩種情況分別開發,對開發者來說,要開發同時兼容 GMS 以及兼容非 GMS 的應用並不太困難,現實中,本身需要依賴 GMS API 的第三方應用就非常少非常少,而這些應用但凡做過國際化適配,適配過中國區的,都能夠在無 GMS 環境下運行。所以一個廠商真的想 fork android 也沒有問題。

第二篇文章說道,你想要保證你設備的兼容性,就必須受 GMS 掌控。不過,GMS 對 Android 有掌控作用的前提,是大量第三方應用在沒安裝 GMS 的純 AOSP 中無法使用。很可惜,這並不是事實絕大多數 Android 第三方應用與 GMS 並不相干,剩下的極少量的與 GMS 相關的第三方應用,如果進行了一定的兼容性處理,在無 GMS 環境中一般也可以實現正常使用

這篇文章是個翻譯的文章,文章的英文原作者在技術上的的觀點本人表示不贊同,微軟的軟體研發能力不會低到連開發一個 GMS API 都很困難的地步,那是對微軟的侮辱。

從我個人的角度來看,微軟做 Android 手機是完全合理的選擇,最大的錯誤只是這款手機的硬體配置實在太低了。


大體上沒問題,細節上比較危言聳聽。

作者言辭之下微軟的開發實力遠遜於亞馬遜,這個隱藏條件不知是怎麼得到的——操作系統這方面,亞馬遜能做到的事情,微軟只會做的更好。

確實有一部分aosp應用整合進了g-apps,但是諸如簡訊、launcher這些應用在市場上本身就有大量替代品,作者刻意強調了這些東西的實際意義,而實際開發難度遠沒有那麼誇張。

另外最根本的運行環境還是在aosp中,gms的api更多屬於「增值」部分。


危言聳聽,實際上用過cm或者國產rom都知道,gapps的硬體依賴性非常小。這是為什麼國貨rom和cm都會「偷偷」給出gms包。

只有當這種適配行為變的非常難時,原作者說的才有意義。

另外aosp的意義遠遠超過作者的描述。就算去fork了,aosp也是目前地球上最流行,各種標準最統一的linux distro。靠著libhybris等技術,android作為底層存在於ubuntu touch,ffos,jolla sailfish等os中。

更不用提headless android和replicant了。


推薦閱讀:

linux g++以及build-essential 安裝問題?
請推薦 編程書籍 結合各位自己的實際?
為什麼 Linux 內核中不經常使用 typedef?
如何在 Linux 系統上使用印象筆記 Evernote?
不要雙系統,不要虛擬機,win7系如何換linux系?

TAG:Linux | 開源 | Android |