Android 軟體開發的思惟與建議

jollen 發表於 January 3, 2011 1:06 PM

(原文刊載於零組件雜誌,2010年12月)

2011年是Android揮軍平板電腦的重要一年。

AP+OS+APP主導產品開發,AP(Application Processor)應用處理器是產品主板(PCBA)的靈魂,主要的功能是用來執行作業系統。OS(Operating System)的重要性在於它提供應用軟體的執行環境,並負責驅動主板上的所有硬體。APP(Applications)則是基本作業系統所撰寫的應用程式。

作業系統有近二十年來,不斷蓬勃發展,並採取社群模式開發的Linux kernel。應用程式部份,有Google提供的AOSP(Android Open Source Project)以及Android API標準。應用程式開發者基於標準API撰寫各式有創意的應用程式,產品開發商或硬體製造商,可基於AOSP的架構以及API標準發展產品。對產品開發商的優點是,基於AOSP架構與API標準所發展的產品,可搭載「現有的 Android 應用程式」。意思是,Android Market或第三方來源的各種Android應用軟體,「很早就為我們的產品準備好了」。

因此,AP+OS+APP的產品公式,可等價於AP+Android Application Framework+Developers。這讓產品開發的思惟很不同,但也可以很傳統,取決定產品本身的定義。以下是幾點「很不同」的想法,提供大家參考指教。

第一、Android Application Framework的開發強調「相容性」。這個相容性並不是傳統上的「硬體相容」或是「舊版本軟體相容」,而是「API相容」。如同上述所提,當一個 Android框架無法開發到API相容時,「很可能多數的現成軟體都無法正常執行」。開發Android產品不是只為了硬體,而是要支援網路上「現成的各種軟體」。消費者可能無法接受一個API不相容的Android產品。大部份的應用開發者都基於標準Android SDK做開發,此時,API不相容的產品,會讓這些應用軟體無法執行。因應這個問題,Google提出了CTS套件,希望廠商開發的 Android 框架與產品都可以通過CTS(Compatible Test Suite)測試。

第二、開發軟體是「設計導向思惟」。寫程式(Coding)並不等於做軟體(Software),寫code可以很straight forward,意思是,大家可以通往直前,不受任何限制地自由發揮,程式碼怎麼寫,很自由心證。但是做軟體就很不同了。以Android框架的開發為例,寫code要考慮架構,要先做設計(OOD),要驗證設計的正確性,同時也要達到重用(Design Reuse)框架設計的要求;所以開發Android框架,是在一套系統化且制式的規模下進行,寫code受到規範。過去硬體商寫code是為了驅動硬體,或驗證硬體,現在要擔綱軟體開發的工作,coding的思惟就要改變。

第三、這是開放平台。開放平台(Open Platform)與開源軟體(Free and Open Source Software)是二個概念。開放平台代表開放API給開發者使用,或是開放Platform Builder供製造商使用,製造商很可能無法取得內部的實作源碼(Implementation source),取而代之的是一個configurable的環境。意思是說,AOSP版本的程式碼很可能永遠都是reference code,廠商自已的implementation也不會公開源碼。Android裡的Launcher是reference Launcher,Android裡的rild也只是reference code;大部份implementation是reference implementation,不是workable或useable code。所以,不能只顧著等候AOSP的釋出,也不能渴望著取得所有的源碼。強化開發能力,動手發展AOSP成為好用的自有版本,才是務實之道。

2011年是Android揮軍平板電腦的重要一年, 要知道製造商在Android的研發儲備能量,這將是重要的觀察指標。

讀者留言 (0)

留言功能維護中。將於近日重新開放。

連絡作者

Jollen Chen,Moko365(仕橙3G教室)講師,熱愛研究 Linux 與 Android 技術。曾為 Motorola、HTC、Foxconn、LG、OPPO、騰迅、廣達電腦、緯創、仁寶等超過 50 家企業講授課程。目前在 MokoVersity 擔任軟體工程師,撰寫 Node.js 程式,也在幾家科技廠兼任 Android Framework 研發顧問。您可透過電子郵件 <jollen (at) jollen (dot) org> 或這裡與我連絡。