編輯:高級開發
android開源語言采用了軟件堆層(software stack,又名軟件疊層)的架構,主要分為三部分:底層以Linux核心為基礎,由C語言開發,只提供基本功能,下文進行說明指導。
這段話的意思是說,Google玩了一個花招,在kernel和應用程序之間,自己做了一個中間層,這樣就既不違反GPL許可,又能不讓外界看到廠商的硬件驅動和應用程序的源碼。裡面的關鍵在於,Kernel和android的許可證不一樣,前者是GPL許可證,後者是apache Software License(簡稱ASL)許可證。
GPL許可證規定,對源碼的任何修改都必須開源,所以android開源語言了,因為它修改了Kernel。而ASL許可證規定,可以隨意使用源碼,不必開源。所以建築在android之上的硬件驅動和應用程序,都可以保持封閉。為了得到更多廠商的支持,Google有意選擇了這樣做。
並且特意修改Kernel,使得原本應該包括在kernel中的某些功能,都被轉移到了userspace之中,因此得以避開開源。這樣做或許有利於推廣android,吸引廠商和軟件開發商的加入,但是Google也放棄了構建一個真正開源的手機系統的機會。
從而也就不能獲得由全世界程序員提供智慧、分享代碼、推動創新的好處。關於許可證問題的深入討論,請閱讀Ryan Paul的文章《Why Google chose the apache Software License over GPLv2 for android》。
Google的這種做法,直接後果就是給Linux Kernel帶來了麻煩。Greg Kroah-Hartman清楚地說出了自己的不滿。由於這個原因,Google也從不把大量的硬件驅動程序和平台源碼向kernel提交。實際上,它創造出了一個kernel的分支,大量的開發者都依賴那個分支。”
這就是android干的事情:它修改了Kernel,但是又不提供修改的細節,自己搞了一個封閉的系統。說得難聽一點,它利用了開源社區,要求開源社區為它做貢獻,卻又不願提供回報。所以,Linux Kernel就把android開源語言踢出去了,真是再正常不過了。人們有權利質疑,android這樣的哲學是否正確?是否符合Google“不作惡”的口號?
如果android開源語言繼續這樣封閉下去,那麼開源社區為什麼要為它免費制作軟件呢?因為我又不是在為開源社區服務。而是在為Google服務。既然這樣的話,那還不如去支持iPhone呢,至少能在軟件商店裡多賣一點錢,而且喬布斯看上去也更酷一點。
我私底下已經說過,我願意幫助完成這項工作,在這裡我再次公開這樣說。但是如果沒有Google程序員的加入,什麼也不會發生。”android必須變成一個真正的開源系統。如果像現在這樣封閉下去,就會被開源社區拋棄,就一定不會成功,即使有Google的支持。
我接受他的批評,我確實有點感情用事。主要是因為對Google有太大的期望,所以不能接受它現在的這種做法。這一次,也許不能說Google做錯了什麼,畢竟都符合GPL許可證的要求。但是代價也是巨大的——它放棄了創造未來的機會。
我堅信,未來主流的手機操作系統一定是開源的,就像我堅信未來Linux一定勝過Windows一樣。現在,既然Google放棄了這個選擇,那麼只能等待其他人來做出開源的手機系統了。這也意味著,我們還要在黑暗中等待更久。
SurfaceVIEw在android中用作游戲開發是最適宜的,本文就將演示游戲開發中常用的兩種繪圖刷新策略在SurfaceVIEw中的實現方法。 首先我們來看一下本
大家都知道,android 2.3 SDK發布的時候,在SDK中增加了第三方add-ons,其中就包括了針對平板電腦的Galaxy Tab Addon。當我們啟動一個新
tp://images.cnblogs.com/cnblogs_com/phinecos/20080415/2009082805.jpg border=0 alt= w
上一節中我們通過http協議,采用HttpClIEnt向服務器端action請求數據。當然調用服務器端方法獲取數據並不止這一種。WebService也可以為我們提供所