Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 初級開發 >> google偽開源 Android手機系統

google偽開源 Android手機系統

編輯:初級開發

滿大街都在談論Android,它是當紅炸子雞。許多人覺得,iPhone將受到它的強力挑戰。  而日前,有一位名為“阮一峰”的網友就根據國外的一些業內狀況對Android的發展提出了自己的看法,Android真的像Linux那樣開源,而Google也真有那麼偉大嗎?此文非常值得大家一讀:   我也曾經對Android充滿了期待,但是後來的事態發展,令我改變了看法。前幾天,我就在網志上寫了自己的擔憂:“首先,android應用程序只能 用Java語言開發。其次,Google對Android采用了一種全面霸權式的管理,完全不是其他開源軟件的開發方式,一切都由Google說了算,很 多地方是黑箱,外界不得而知。”沒有想到,僅僅過了兩天,擔憂就變成了現實。Linux Kernel的維護者Greg Kroah-Hartman宣布,將Android 代碼從 Linux kernel 代碼庫中刪除。這意味著,Linux Kernel的開發小組不認可Android的貢獻,兩者產生了沖突。  消息公布以後,外界普遍覺得驚訝和可惜。好不容易,才有了一個這麼受歡迎的開源手機系統,應該齊心協力、共同開發才對,為什麼要“窩裡斗”呢?到底是什麼矛盾,使得Linux Kernel小組剔除Android代碼呢?  Greg Kroah-Hartman寫了一篇詳細的文章,解釋這個決定。下面就來看看,他是怎麼說的,以及Android到底是一個什麼樣的系統。在 這之前,你最好知道Greg Kroah-Hartman是誰。他是目前Linux Kernel的核心開發人員,負責stable軟件包的發布。就是說,每一個新版本的Linux Kernel,都是經過他的手流出來的。此外,他還負責硬件驅動的部署。而他的手機就是HTC G1,每天都在使用。所以,他是絕對有資格談論這個問題的,他的看法代表了Linux社區對Android的看法。  首先,他指出android和其他的Linux發行版不一樣:  “Google has taken the Linux kernel, and nothing else from a “traditional” Linux system.
  Google只用了kernel,別的東西都沒用。”   這就是說,與Ubuntu、Debian、Redhat這樣的傳統Linux發行版相比,只有系統的底層結構是一樣的,其他東西在Android裡都不 一樣,尤其是程序員的編程接口是完全不同的。因此,Android應用程序都必須重新寫過,現存的Linux程序無法移植上去。所以,從嚴格意義上 說,Android是一種全新的系統,它與Linux的距離,比Mac OS與Linux的距離還要遠。 然後,Greg Kroah-Hartman肯定了android這樣做的積極意義: 
   “android also solves the problem that the phone manufacturers had been having for many years: a free version of Java and a unifIEd application layer that programmers can write to that will work on all phone platforms that integrate it.
  它解決了長期令手機制造商頭痛不已的問題:業界缺乏一個開源的Java虛擬機,以及統一的應用程序接口。現在,程序員只要寫一次程序,就能在各種手機硬件平台之上使用。”  這段話解釋了,為什麼Android的應用程序,都必須用Java語言開發。因為不這樣做的話,沒法讓程序做到硬件無關。  且慢,這真的是理由嗎?傳統的Linux系統,也並不依賴特定的硬件啊!只要把源代碼根據不同的平台,分別編譯一下,同一個程序不也照樣可以在不同的硬件架構、不同的Linux發行版中使用嗎?   那麼,android只采用kernel、只允許用Java編程的真正原因,到底是什麼?  台灣的科技網志MMDays一語道破真相:  “Linux kernel的版權是GPL。
  這下問題來了:如果你是硬件廠商,希望你的硬件能在 Linux kernel 下運作,那麼就必須要有驅動程序。如果驅動程序的程序代碼公開,等於硬件規格也公開的差不多了。許多廠商不願意這麼做,所以就提供編好的驅動程序,但不提供原始碼。   Android 的重點就是商業應用,Google采用了一些手法來繞過這問題。他們把驅動程序移到 “userspace”,也就是說,把驅動程序變成在 Linux kernel 上頭跑,而不是一起跑的東西,這樣就可以避過GPL。然後,在 kernel 這邊開個小門,讓本來不能直接控制到硬件的 “userspace” 程序也可以碰得到,這樣只要把”開個小門”的程序代碼公布就行啦。”  看明白了嗎?  這段話的意思是說,Google玩了一個花招,在kernel和應用程序之間,自己做了一個中間層,這樣就既不違反GPL許可,又能不讓外界看到廠商的硬件驅動和應用程序的源碼。這樣做或許有利於推廣Android,吸引廠商和軟件開發商的加入,但是也給Linux Kernel帶來了麻煩。Greg Kroah-Hartman直截了當說出了自己的不滿。   “…any drivers written for android hardware platforms, can not get merged into the main kernel tree because they have dependencIEs on code that only lives in Google’s kernel tree, causing it to fail to build in the kernel.org tree.
  所有為android寫的硬件驅動,都不能合並入kernel。因為它們只在Google的代碼裡有效,在kernel裡根本沒法用。 
Because of this, Google has now prevented a large chunk of hardware drivers and platform code from ever getting merged into the main kernel tree. Effectively creating a kernel branch that a number of different vendors are now relying on.
  由於這個原因,Google也從不把大量的硬件驅動程序和平台源碼向kernel提交。實際上,它創造出了一個kernel的分支,大量的開發者都依賴那個分支。”   這就是Android干的事情:它修改了Kernel,但是又不提供修改的細節,自己搞了一個封閉的系統。說得難聽一點,它利用了開源社區,要求開源社區為它做貢獻,卻又不願提供回報。  所以,Linux Kernel就把Android踢出去了,真是再正常不過了。    人們有權利質疑,Android這樣的哲學是否正確?是否符合Google“不作惡”的口號?如果Android繼續這樣封閉下去,那麼開源社區為什麼 要為它免費制作軟件呢?因為我又不是在為開源社區服務,而是在為Google服務。既然這樣的話,那還不如去支持iPhone呢,至少能在軟件商店裡多賣 一點錢,而且喬布斯看上去也更酷一點。  slashdot上有很多關於此事的討論。有人指出:“Google自己的網站,與微軟的網站一樣封閉。它開源出來的東西,都是根據GPL許可證不得不開源的。”  好吧,姑且不談Google本身,因為它至少不要求外界提供支持。但是android不一樣,你不能假裝成開源系統,騙取社區的支持,然後又干著封閉系統的勾當。  Google必須做出選擇。正如Greg Kroah-Hartman最後的呼吁:  “I really don’t know. Google shows no sign of working to get their code upstream anymore.
  我真的不知道未來。Google看上去沒有任何改變代碼的跡象。
   I do hold out hope that Google does come around and works to fix their codebase to get it merged upstream to stop the huge blockage that they have now caused in a large number of embedded Linux hardware companIEs.
  我確實希望Google做出改變,把它的代碼合並進我們的代碼,彌補已經出現的代碼分裂。I’ve privately offered in the past to help this work get done, and am doing again here publicly. But I need the help of the Google developers to make it happen, without them, nothing can change.
  我私底下已經說過,我願意幫助完成這項工作,在這裡我再次公開這樣說。但是如果沒有Google程序員的加入,什麼也不會發生。”  android必須變成一個真正的開源系統。如果像現在這樣封閉下去,就會被開源社區拋棄,就一定不會成功,即使有Google的支持。
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved