Email me: jollen # jollen.org

more: Jollen 的 Embedded Linux 教育訓練

« April 2009 | (回到Blog入口) | June 2009 »

May 2009 歸檔

May 6, 2009

Android Day 活動紀錄:Android 應用程式新手入門訓練

android-day-banner.jpg

上週六(5/2)舉辦「Android Day」訓練活動,上午的活動是「Android 的機會」議程,下午舉辦了一場免費的 Android 訓練課程。Android Day 訓練活動的目的除了希望可以認識朋友,並面對面與大家交換不同的想法外,也希望可以幫助對 Android 應用程式有興趣的朋友,能一天就入門 Android 應用程式設計。對於想初步了解 Android 應用程式設計方法的朋友相當有幫助;透過 Android Day 訓練課程希望能幫助大家節省一開始的自學時間。

上午的議程,由小弟我、高煥堂老師與 David(gOS 執行長)以自由論壇形式,與大家討論 Android 產品端與推廣方面的想法。由於 Android 的 middleware 技術(包含調校、移植等)對產品的發展是一個重要的技術能力,因此高煥堂老師提出一個 shared object(shared library)工作小組的計畫,此外,高老師也針對 middleware 的觀念做了一些說明;David 也從「授權」的角度來分析,為什麼採用 APL(Apache License)授權的 Android 平臺,比起過去以 GPL 授權為主的桌面 Linux 與 Mobile Linux 有更好的商業機會,以及更多元的商業模式。

在推廣方面,現場討論到了亞太地區的分工與交流。日本與韓國對於 Android 技術的參與熱度並不比台灣低,因此如何善用台灣「硬體設計」的優勢,並結合 Android 設計服務,來創造新的機會,成為當天討論的一個想法。

下午則是由小弟主講的「Android 應用程式新手入門訓練」訓練活動,由於現場大部份的朋友都沒有安裝 Eclipse + Android Development Toolkit 的經驗,因此一開始利用一些時間,介紹 Android 開發環境的安裝方式;在主要課程方面,則是以「Android Day Package -- Android 應用程式新手入門」講義與範例做為教材,介紹 Android 應用程式的主要觀念(例如:Activity、View 等)。希望這種形式的活動,對大家入門 Android 有幫助。

下週(5/16-17)將在上海與北京舉行的第一屆 Android 技術大會,將會與日本與韓國的專家現場進行討論,這次的技術大會,除了介紹一些重要的 Android 技術議題外,也會是讓大家交流與互動的好場合。

May 10, 2009

Jollen 的 Android Porting 手札 #1: Android 移植概觀

本週六將於北京舉行的「Android 技術大會」上發表有關「Android 移植」的技術演說,配合該演講,最近將陸續整理一些筆記以搭配講稿供與會朋友參考。

Android 的技術優點

Android 平臺的好處是「將開發者侷限在應用層(application level)」的開發,並透過一個設計良好的 application framework 將 library 層「包裝起來」。傳統 GNU/Linux 系統的「開源模式」是「從裡到外」全面開放,應用程式來自四面八方,每個應用程式底層使用到的 library 並不相同,這讓 Linux 平臺的軟體發展容易失控,造成 Linux distribution 上雖然收錄了豐富的應用程式,但相對的也要包山包海地納入非常多的 shared library。

Android 雖然也採用了其他 open source 的專案成果,但 Android 以很聰明的方式,解決傳統 Linux 開放手機平臺的「相依性」問題,這也是過去長久以來,匯整使用(leverage)開放源碼專案開發產品的大問題。Application framework 採用 Java 程式語言,並軟性的將開發者限制在 application level 是 Android 解決上述技術難題的一個關鍵。

網路上有著數以萬計的 Free & Open Source Software 專案,而被 Android 採納的 FOSS 專案僅有約 60 個左右,比起傳統 Linux distribution 必須收錄上千個套件的數量來看,Android 未來若能發揚光大,能是扮演「收斂」開源軟體發展模式的推手。

傳統的 Embedded Linux 系統程式基於 GNU libc 以及大量的相依程式庫(library dependencies),因此很容易有「牽一髮而動全身」的問題出現。例如:某一個library的API變動(可能是函數改名或移除)將使得其它程式庫與應用程式執行錯誤,這時就必須修改原始程式碼並重新編譯才能解決問題。

這個問題的主因,是因為 Linux 系統是採取動態程式庫(shared libraries)的機制,程式庫的變更雖然只需要「抽換」掉動態程式庫檔,但是應用程式在執行時,才會產生「無法載入符號」的錯誤,除非是「定期」進行「系統重編譯」,否則很難即時修正此錯誤。

Android 的底層並無太複雜的「程式庫相依」問題,這使得 Android 可以比較容易將系統與 IDE 開發工具做整合。在標準 C 程式庫(C library)方面,Google 則是採用 BSD 授權實作了一份適合手機系統使用的版本,無疑是一個值得稱許的做法。

由上述的分析來看,Android 平臺在系統層(library、kernel)的移植工作將不再花費工程人員大量的時間,同時就系統層的調校工作來看,也能有更具體明確的調校項目。

移植項目概述

從 Google 發佈的標準 Android 系統架構圖來說,Application framework 以及 application 二層並沒有重要的移植工作需要進行,以下以系統架構的角度來簡介 Android 移植技術的重要事項。

1. Application

應用程式層並移植的工作需要進行,但是因為 Android 每個版本的 API level 都不一樣,因此需要進行 API 相容性的測試。例如,Android 1.1 的 API level 為 2、Android 1.5 的 API level 為 3,需要根據 Google 發佈的 API change 文件進行 application 的相容性測試。

2. Application Framework

以大方向來看,加入新的 library 時需要擴充 application framework;Android framework 以 JNI 呼叫下一層的 library,但是 application 不直接呼叫 library,因此讓 Android framework 的設計更嚴謹。

3. Library

Android 的「external library」裡包含部份現有的 FOSS 專案成果,有些 library 的實作為 machine-dependent,針對 machine-dependent 的實作必須修改其程式碼。例如,android.media.MediaPlayer 的底層為 OpenCore 程式庫,而 OpenCore 的 MP3 decode 部份演算法以 assembly 實作。

4. Dalvik VM

JNI 與 interpreter 是 Android runtimer(Dalvik VM)的移植重點。新版本的 Cupcake(Android 1.5)在 JNI 的部份加入了 x86 的支援,interpreter 目前則是支援 armv4、armv5te 以及 x86。

5. Bionic

Bionic 是 Android 專屬的小型客製化 C library,主要是由 BSD C library 移植而來。支援 Linux kernel 的重要實作,像是:system call、dynamic linker & loader、thread 等等都是檢查的重點。Bionic 裡有一個 libthread_db 是基於 Linux futexes 的 thread 實作,很適合像是手機這樣的小型系統使用。

6. 其它

Android framework 的實作,部份需要考量硬體的規格,例如:Surface Manager 需要考量是否有 GPU 或硬體加速。但你在 Android application 建立一個 Surface holder 時,若是將 Surface 的類型設定為 SURFACE_TYPE_HARDWARE,就必須針對硬體加速與 DMA 做移植工作。

小結

Android 平臺的移植技術仍屬重要,主要的技術能力著重於 Android framework(例如:加入新的 external library)以及 Linux device driver 上。本次 Android 技術大會除了介紹 Android 移植的重點(highlights)以及具體實作方向外,也會展示近期的小小實作成果。

雖然一開始提到,Android 平臺的好處是「將開發者侷限在應用層(application level)」的開發,但是 Android framework 與 Android 移植的能力仍然重要,畢竟這是直接影響產品開發的關鍵力之一。

May 19, 2009

中國移動 OPhone 現身:採用 OMS 系統的 Android 手機(實機附圖)

中國版的 Android 系統 OMS 現身 (China's Android OS,OMS - Open Mobile System)。

日前一則新聞 [大陸OPhone商機 台商幕後推手] 以及 [中移動5月中下旬發佈Ophone手機 主介面已可上網流覽] 報導了中國移動(China Mobile)所推出的 OPhone 手機,採用 OMS 作業系統。本週在北京與 OMS(Open Mobile System)的開發商「播思通讯(BORQS)」人員餐敘,OMS 的開發者也拿出了 OMS 的參考設計(reference design)實機讓現場朋友實機操作。

OMS 採用的正是 Google 的 Android 作業系統,如同上述報導所提,OMS 是 BORQS 與 Google 共同合作開發的中國版 Android 作業系統。OMS 專門針對中國移動做了許多客製化的應用程式。由於機會難得,因此特別拍了一些照片,在這裡跟大家分享。另外也看到了另外一支「很快就要上市」的 Android 手機,同樣也是採用 OMS 系統,但礙於一些因素,無法多做說明,當然也沒辦法照像了。

China Mobile OPhone
主畫面的部份比 G1 還美觀,整體 UI 給我的感覺很不錯。

China Mobile OPhone
看得出來 OMS 在介面設計上下了一些工夫。

China Mobile OPhone
最特別的地方是 OMS 有「桌面切換」的功能,整體操作性做得不錯。

China Mobile OPhone
某一個選單 UI。

China Mobile OPhone
找了一下,果然沒錯,有導航功能!

China Mobile OPhone
找到了手機電視功能。

China Mobile OPhone
訊息雖然微弱,不過畫面還挺流暢的。

China Mobile OPhone
音樂撥放器。

China Mobile OPhone
雖然是參考設計,不過外觀(ID)做得算不錯。

用過 T-Mobile G1 以及 OPhone 後,總結來看,OPhone 的介面給我的感覺更好:

1. 操作性流暢許多
2. 多桌面(主屏)切換功能比 G1 更加好用
3. 觀看手機電視時畫面非常流暢、介面佈署(UI layout)還不錯
4. 整體的視覺效果更華麗、畫面更美觀

隨著越來越多的 OPhone 新聞出現,這款由中國自主開發的「O1」頗令人期待,這是 Android 作業系統繼「G1」後,最令人期待的另一個事件。

OPhone 的出現,還代表了一件重要的事情。過去電信營運商,並不掌握手機軟體平臺的技術能力,因此「為自已量身打造」手機軟體、結合自家的服務,並推出實體手機,是一件不容易的事情。如今,藉由「Open Mobile System」的出現,電信營運商能取得開放的手機平臺,並自行發展手機服務應用程式。這是首次,電信營運商能真正掌握整體手機軟體的技術。掌握了電信、用戶、服務與手機軟體等關鍵能力,看來,一些有趣的事情正要開始發生。對於 OPhone 的出線,中國移動扮演了一個重要的角色,身為最重要的電信營運商,此舉必然有登高一呼的效應。

May 22, 2009

「Android Porting Highlights」簡報上線

上週受邀至「首屆亞太區 Android 技術大會」發表演說,由於大會希望能多著重在技術層面的主題,因此整理了過去研究 Android/FreeRunner 的一些資料,並將「重點」部份做了一次概念性的說明。Android 的分支(branch)是以「產品」的概念做維護,因此若在目前 Cupcake 能支援的平臺(architecture)上做移植的話,是一個較簡單的工作,只需要在 vendor/ 裡新增自已的 product 並修改 AndroidBoard.mk、AndroidProducts.mk 以及 BoardConfig.mk 即可完成一個 Board/Product 的新分支。

關於底層的部份,以 armv4(如 s3c2443)的 architecture 為例,將重要的工作項目做了整理式的說明。在此提供簡報電子檔下載 [Android Porting Highlights]。

關於 May 2009

此頁面包含了在May 2009發表於Jollen's Blog的所有日記,它們從老到新列出。

前一個存檔 April 2009

後一個存檔 June 2009

更多信息可在 主索引 頁和 歸檔 頁看到。

Top | 授權條款 | Jollen's Forum: Blog 評論、討論與搜尋
Copyright(c) 2006 www.jollen.org