[adsense_id="1"]

Web

哪呢?!Android是什麼?!可以吃嘛?!

[adsense_id="4"]



我想,若是平常有在關切科技的朋友,一定對Android不陌生吧,應該也有很多朋友已經在使用Android系統了,而且可能都比我完的還深入呢!不過既然要寫Android的相關文章,我想還是要先把Android這個東東交代清楚才是。這一篇不會有很深的理論層面,不過裡面提到的一些名詞或許會對不是本科系出生的人有點陌生,但是不用擔心,我想我會盡量解釋清楚,而其實,若是你沒有打算”開發”Android的話,那些名詞並不是這麼重要的啦!

好吧,既然要講我想我們得先提一下Android的歷史。我想現在大家都知道Android是一套用於行動裝置的作業系統,普遍應用在手機及平板電腦(ㄟ…或許平板電腦還沒有普遍,不過快了…XD),不過在一開始,傳出Google在開發Android的時候,大家都認為是Google自己開發的手機,會有這樣的認知其實不會很怪異,畢竟當時火紅的iPhone發表,所以大家不免猜疑Google這個大將也會獻出”大禮”回報Apple的攻擊(應該沒有人不知道iPhone是Apple的產品吧?還是連iPhone都不知道?!若是不知道的話,其實你真的可以不用繼續看下去,真的!)不過在2007年11月5日後,Google就對外公開Android系統,是一個手機系統,這一套系統原先是由Google自己開發的,後來由”開放手機聯盟(Open Handset Alliance)”來開發。一開始,Google是併購了成立僅22個月的高科技企業:Android,藉此展開了簡訊,手機檢索,定位等等的業務,在此同時,也著手基於Linux的通用平台進入開發,所以Android其實是由Linux演變而來的。不過,由於Linux是一套自由軟體,也就是大家都可以任意的去修改,基於Android會有商業行為,所以2008年的Google I/O大會,Patrick Brady提出了Android HAL架構圖,以*.so的檔案格式存在,用來把Android Framework以及Linux Kernel分開。接著在2010年初,Linux的Kernel開發者Greg Kroah-Hartman將Android的驅動程式從Linux Kernel的Staging tree(應該翻譯成”狀態樹”嘛?!)去除,所以從那個時候開始,Android就正式跟它的爸媽Linux分道揚鑣啦!於是乎講完了有點嚴肅的歷史。
以下斜體藍字部分請斟酌閱讀,因為有點難度,當然你也可以選擇跳過,這完全沒有關係。

system-architecture

(上圖是一張Android架構非常重要的圖示,點擊圖片可以放大)

所以Android到底是什麼?說穿了,就把它想成一套作業系統吧。以Linux為基礎,然後再向上堆疊,所以Amdroid是採用軟體堆疊(Software Stack)的架構,核心提供Android所需的基本功能,而其它功能就使用應用程式的方式補齊,這些應用程式是使用JAVA去編寫的。而Google的作法是,在發佈一套新的版本後,會把整套作業系統的原始碼檔案全部公布在Android Developers,讓有興趣的程式設計者,可以利用Android這個平台做應用程式的開發,然後擴展Android的功能。就因為全面性的開放,所以讓Android從介面到功能,都有非常多的變化,這大概也是因為Google決定使用JAVA這個廣為大家所知道的語言來當開發的工具,所以讓更多設計者願意花點時間來開發應用程式。Android中的Activity就等於J2ME的MIDlet,一個Activity負責建立視窗,一個活動中的Activity就為前景模式(foreground),而Service是背景執行的程式。前景跟背景會透過ServiceConnection以及AIDL去連結,以達到多程式同時執行的效果。若是正在執行的Activity畫面被其他Activity所取代的話,那個被取代掉的Activity便會停止,或是被清掉。

那UI的部份呢?J2ME中的Displayable在Android架構中為View,Programmer可以透過View Class與XML layout檔將UI放置在視窗上,Android 1.5版以後可以透用View來建造Widgets。而View又與event有著很大的關係,兩者透過Listener連結在一起,每一個View都可以註冊一個event listener,像是我們觸碰螢幕時,會觸發一個touch的事件,這個事件(event)就會向Android框架註冊View.OnClickListener。其實Android的架構要講起來會很複雜,我想上面這些大概就能讓你懂整套Android大致上的運作模式,我想表達的是,它是一層一層去觸發的系統架構。

其他的像是函式層(Library)跟虛擬機器(Virtual Machine)就是作業系統與應用程式間溝通的橋樑,這些為中介軟體,而中介軟體也涵蓋了很大的範疇。Android沒有採用glibc作為程式庫,而是採用Google自行開發的Bionic Libc。圖形引擎為skia,搭配OpenGL/ES,不過相較於Linux的Cairo,skia還是非常陽春的。多媒體方面,Android採用OpenCORE作為基礎多媒體框架,並且用SQLite資料庫,當然有分為Public以及Private。最後是,Android的中介軟體多數也是用JAVA去實作,並且採用特殊的Dalvik虛擬機器,Dalvik VM是一種暫存器型態的JAVA虛擬機器,變數皆存於暫存器中,這樣虛擬機器的指令就會相對減少了!Dalvik VM有多個容器,每個Android應用程式都使用一個專屬的Dalvik VM來執行,這樣可以讓系統在執行程式的時候達到最佳化。

[adsense_id="1"]

好的!上面若是你有看完,相信你現在已經快喘不過氣來了吧!若是你覺得還不夠,你可以自行到Wiki去看看,上面有著非常豐富的資源,當然你也可以選擇到Android Developers的網頁去看看,官方版強大且完整的開發說明檔。

Android從1.0開始發表,而始祖則搭載在一支T-Mobile G1這支手機內,這是由偉大的HTC所生產的手機。

HTC_g1

現在看起來這支手機好像有點設計不良的感覺,但是在當時可以說是風靡一世啊,這是那時候第一支,也是唯一的一支Android手機呢。隨後,隨著Android 1.5的發表,HTC就推出了Magic,我想這支看起來就好看了一點。

HTC Magic

接著就像進入百家爭鳴的情況,當Google發佈Android 1.6的時候,突然冒出許多手機廠商都開始裝載Android系統,像是HTC,Motorola,LG,Samsung,Sony Ericsson,Acer等等,Android系統就像瞬間紅起來一樣!有趣的是,若是你周遭有朋友已經在使用Android了,那你或許有機會聽到他口中一直冒出”食物”的名字,像是優隔,甜甜圈等等之類的!沒錯!Google都用食物的名稱來命名每一個新版本的Android,這個很有趣,而且在新的版本被發表的之後,Google也真的會做一個很巨大的食物看板,就立在Google總部的廣場上面!

Android 1.5 被命名為”Cupcake”,於2009年4月30日推出,使用者可以更方便的連結網路,像是將拍好的照片直接上傳到Pisca,或是影片傳至YouTube,這版也大大提昇了GPS的性能,並且提供虛擬螢幕按鍵,還有應用程式跟著手機旋轉,來電顯示照片等等。

03

rd_rs_fc002f9c02fcec3b64256cfc23d9c231

上圖為放在Google總部外面的Cupcake,而那個Android機器人左方的那個甜甜圈就是Android 1.6的名稱:Donut,於2009年9月15日發佈,支援手勢,CDMA網路,文字轉語音系統,快速搜尋框,全新設計的拍照介面以及Market,更高的螢幕解析度,以及應用程式耗電量檢視,其實這版跟之前的比起來算是進步蠻大的,也是當時開始有大量Android手機出現所搭載的一個版本。

4be6e7d1820f6

接著就是Android 2.0/2.01/2.1,2009年10月26日發表,名稱為”Ecliar”,閃電泡芙(我沒吃過!XD)

eclair_2009

這個版本世目前市面上最多手機搭載的Android版本,徹底優化過的硬體效能,以及更高更多的螢幕解析度,介面上的重新設計,並支援內建閃光燈,還有相機的數位變焦,藍芽2.1等等,整體來說,我接觸過1.6,現在是使用2.1的進化版2.2(XD),好啦!不過我也短暫的用過2.1,那個速度跟1.6實在是差太多太多了!難怪大家爭著要升級到2.1。

接著是Android 2.2,2010年5月20日發表,名稱:Froyo,”冷凍優格”

Froyofroyo-android

這個版本應該是不需要我多廢話,只能說:相當的快!(XD),它把Flash Player 10.1整合進去了,從此Android終於支援了Flash(就在此時,Apple正是跟Flash說掰掰了!),以及更強的硬體效能提昇,還有把手機當做WiFi熱點,就是無線AP的意思,以及更加成熟的系統架構及穩定度。

接著最新的為Android 2.3,也就是之前大家一直傳聞的Android 3.0,不過Google在2010年12月7日發表後,就證實了沒有3.0這東西了!名稱為:Gingerbread,薑餅人,很可愛喔!這版本把介面又重新設計過,並且提供更流暢的操作,支援多鏡頭,以及近場通訊(NFC),螢幕鍵盤的強化,以及電源,程式的管理更加強大,然後對於遊戲開發者,Android 2.3也會成為一個最佳的平台!

android-gingerbread-1

gingerbread-man-android-rm-eng

上圖是豎立在Google廣唱上的薑餅人。屆時Google也發佈了自家第二支手機:Nexus S,其實這支就是Samsung Galaxy S(i9000)的小小升級版,硬體規格幾乎一樣。

[adsense_id="1"]

所以,看了那麼多?你到底需不需要Android系統呢?

有用過Google服務的就知道,Google主打雲端運算,說簡單一點就是把所有的服務架在網路上,你可以把在Android上做的所有設定,文件,聯絡人資訊等等通通傳到Google帳戶裡面(也就是你要申請一個Google帳戶),之後你只要換Android手機,不管是哪一支,在同步回來就好了,這比iPhone會來的方便一點(我就是那種備份完檔案會被我丟來丟去最後要用就找不到的那種人)。另外,iPhone有iTunes Store,可以從上面下載軟體跟遊戲,大部分要錢,Android也有相同機制:Market(萬能的Market,凡是找不到的功能,或是想增加樂趣,只要請出Market,就都滿足了),而且大部分都……免費(XD),雖然軟體數目還遠不及Apple App,但是我想會有越來越多人加入開發Android的行列的。所以你需要Android,你需要這麼便利,這麼簡單,這麼流暢的全新體驗,那選擇Android就對啦!而且可玩性也很高很高喔!買支Android手機可以讓你天天驚嘆不已!

(是說最後一段寫那樣Google應該要付我廣告費?!)

謝謝大家的收看!本篇到此結束!

[adsense_id="5"]