瀏覽人次:【13003】
Android平台帶來什麼機會?
貨櫃(Container)的啟示
最近有一本書(The Box)敘述著貨櫃的深刻涵義。在許多革命性轉折裡,經常出現貨櫃的身影。長榮海運公司總裁張榮發先生深具眼光地大力支持貨櫃,加速改變了整個運輸產業,也改變了人們的生活。回想20多年前的大型IC電路板,它是一種硬體貨櫃;隨之出現的是微軟的Windows,它是軟體貨櫃;兩者威力的加乘效果影響至今。當年李國鼎先生帶動台灣投資建廠,大力支持IC貨櫃,又支持Windows/.NET軟體貨櫃,讓台灣一躍成為亮麗的矽島。如今,手機、數位化汽車等是移動式的硬體貨櫃,而Google Android則是移動式軟體貨櫃。如果這個觀點是正確的話,誰願意像當年台灣的李國鼎先生一樣,深具眼光又勇往直前,大力支持新興貨櫃,則幸運草很可能就會出現在他身旁。
開放(Open)平台的機會
20多年前,硬體規格開放了(如Apple II和IBM PC),帶給台灣巨大的機會;然而,Apple麥金塔(Macintosh)電腦硬體封閉了,台灣產業的機會少了。以此觀之,國外規格對台灣開放了,台灣產業機會就來了。反之,規格封閉了,台灣產業機會就少了。過去數十年來,國外軟體平台規格都沒有充分對台灣開放,台灣軟體(含嵌入式)產業的機會少了。隨然,十年前的Linux平台開放了,不過Linux平台並不完整,無法給予台灣產業足夠的養分。開放環境裡的Linux角色就相當於微軟環境裡的Windows,僅限於這個層級的開放是不充分的。因為Windows + .NET框架才是完整的平台;所以Linux + Android框架才是完整而充分的,才能帶給台灣巨大的機會。
機會:以Android Netbook為例
Linux與Android是互補的角色。從硬體銜接到Linux,從Linux銜接到Android,然後從Android銜接到應用程式,成為一個完整的平台架構。其中,Android的內部含有領域知識(Domain Knowledge),這些知識以框架(Framework)形式表達於系統裡。所以Android是一種特殊領域的框架(Domain-Specific Framework);例如,目前的Android是屬於手機領域的框架。由於Netbook與手機的領域知識不盡相同,必須抽換掉Android裡的部分領域知識,才能構成Android Netbook商業化產品。基於這個緣故,且台灣擁有最豐富的Netbook領域知識,使得台灣是全球最矚目的Android Netbook開發基地。因此,就以Netbook產業為例,開放的Linux + Android框架為台灣產業帶來蓬勃發展的機會。
Android平台軟體架構
大家最常見的Android平台架構如圖一所示。
《圖一 典型的Android平台架構圖》
|
圖一說明了:
●應用程式(Applications):依據使用者的期望而將Android框架裡的組件及Library組件組合而成的高階服務。
●應用框架(Application Framework):這是結合Applications與Libraries的幕後主架構。
●Android Runtime:主要是Java虛擬機(Virtual Machine)。
●Libraries:Android已提供了一些C++程式庫。例如,SQLite資料庫系統、OpenGL 3D繪圖系統等。
●Linux核心:Android依賴Linux 來提供核心的服務,例如記憶體管理、進程(Process)管理、執行緒(Thread)管理等。
由於圖一無法透視出台灣產業的著力點,所以以透視圖來表達如圖二。
《圖二 透視型的Android平台架構圖》 |
這張圖有助於解析台灣產業的著力點。茲分析如下:
假設台灣產業的利多是:「軟硬整合、以軟體加值硬體;硬體包裝軟體、讓軟體無限複製。」
那麼台灣軟體業的著力點在於:程式庫層(*.SO)。
基於*.SO,往下銜接到Driver和硬體組件,以*.SO來加值台灣的硬體組件。
基於*.SO,往上銜接到Google支持的Java抽象類別和介面,再銜接到成千上萬的應用層Java子類別,享受「*.SO + 硬體組件」無限複製的商機。
於是,創造了「軟硬整合、無限複製」的美好利多。
Android平台開發要點
「做」出新軟體組件
基於上述的解析,台灣產業於Android平台的開發要點是:
開發*.SO發揮台灣硬體組件之特色。
然後,往上嵌入於Android框架層。
茲將之歸納為三個步驟,筆者稱之為:「軟硬整合三步曲」。
由於台灣IT產業的開發人員對於硬體、BIOS和Linux(Driver)三者極為熟悉,但是對於Android的框架(Framework)部份非常陌生。於是,這三步曲讓開發人員能「知己知彼」,從自己熟悉的「硬體、BIOS和Linux」銜接到還很生疏的「Android框架」,而達到百戰不殆之境界。所謂三步曲就是:
第一步
熟悉上層Java應用組件(如Activity、Service、Broadcast Receiver和
Content Provider)之間的互動模式,如圖三所示。
《圖三 Android應用框架之結構》 |
第二步
以C/C++開發Android的本地(Native)共享類庫(Shared Library, 即Linux裡的*.SO組件),並銜接(或調用)到自己熟悉的硬體、BIOS和Linux(Driver)。如圖四所示。
《圖四 *.SO向下嵌入到自己的獨特硬體裡》 |
第三步
撰寫卡榫(Hook)類,將共享類庫(*.SO)向上嵌入到上層的Java應用框架結構裡。
《圖五 *.SO向上嵌入到Android應用框架裡》 |
此焦點不在於Android商業應用系統開發(Application Development),如Google Map的應用等等。而且假設Android系統能在你的環境裡執行,起步的「移植」(Porting)已經不是你的焦點了,如何進一步邁入產品商業化,才是你目前的焦點所在。基於上述的三步曲,就能逐步「做」出新的商業化產品。
「做」出Android-like整個新平台
剛才已經說明過,本文是從「做」Android軟體組件為出發點。因為這樣對台灣產業最有利了。君不見,20多年前,台灣的IT前輩們不只是想要「用」當時的Apple II或IBM PC,而是想要趁著PC硬體規格開放之潮流,趕快「做」PC的主機板、零組件或整部PC。經過20多年後的今天,台灣業界不要僅僅將Android視為另一種「平台」(Platform),而善加利「用」一番;反而,要趁著Android軟體規格開放之潮流,趕快「做」Android平台裡的*.SO軟體組件,甚至「做」出整個新版的Android-like框架來安裝於Netbook、各式各樣的家電產品裡,甚至應用於所有的傳統產業的產品裡。
擺脫「被外人掐著脖子走」的枷鎖
以「做」的心境來迎接Android軟體規格開放潮流,會有意想不到的效果:讓台灣硬體業擺脫「被外人掐著脖子走」的枷鎖。台灣IT產業的前輩簡明仁先生就形容台灣硬體業「被外人掐著脖子走」,這種感覺對台灣業者而言再熟悉不過了。但是大多數人皆知其然,而不知所以然。即使知其所以然,也各自觀點不同,歸因也不相同。當筆者將這些不同觀點匯集起來,卻得到一個另一個觀點:
「台灣嵌入式軟體開發人員,不積極掌握軟體控制(Control)點。」
為什麼這樣說呢?從軟體技術的發展歷史可嗅出一些味道。回想1995年時,為何美國軟體業會放棄當時被視為先進的CORBA標準呢? 其理由很簡單,就是:CORBA是一群軟體服務(Software Service)的集合,都是被動的,準備好並等待應用層級的程式來呼叫它們。這種思維,仍然是當今台灣眾多嵌入式開發者撰寫驅動程式(Driver)的主流思維,所撰寫的軟體都是一群被動的軟體服務之集合。數十年來,似乎未曾想過要去改變一下觀點,因而未能長久未能掌握軟體的控制點,同時連累了台灣的硬體業,讓硬體業者及其產品長期處於被控制的地位。
有許多人會說到:像Linux的服務功能也是被動的呀,嵌入於Linux(或其它OS)的各種驅動程式當然也是屬於被動型的軟體服務呀,這有甚麼錯呢? 這種觀點只看到問題的一部份而已。就如同說:我的左手只能被動防禦別人的攻擊,這是事實呀,沒辦法的事呀。
然而,就是因為左手只能被動防禦,所以會想到使用右手去主動控制別人。就像Windows作業系統(OS)是被動的服務居多,所以像微軟等軟體業者,放棄CORBA等被動型的軟體服務平台,轉而致力開發COM/DCOM及後來的.NET應用框架去反向呼叫(即控制)應用層級的軟體程式。同樣地,台灣產業也得學習發展自己的系統框架,透過框架來有效掌握軟硬整合系統的控制點。於是:
「框架(Framework)是一種絕佳的工具,讓台灣廠家能有效掌握軟體控制點。」
所以Google公司想逐鹿手機軟體市場時,其首要的策略就是大力推出:
「積極主動的Android框架+被動服務型的Linux OS」=右手+左手
這種策略,其實跟微軟的”.NET框架+Windows OS” 策略是一致的。於是,台灣產業應該化被動為主動,積極掌握軟體的控制點。此時,製「做」Android-like軟體框架是台灣產業擺脫「被外人掐著脖子走」苦楚的不二法門。
如果上述「做」Android-like軟體框架是台灣產業前途的一座燈塔。那麼有沒有安全可靠的航線呢?答案是肯定的。台灣軟體業發展軟體框架時,經常陷入共識難求的困境裡,這並非單靠精致的軟體技術所能解決的。例如,Message Queue、Thread model等都是常常出現公說公有理、婆說婆有理的困境裡。甚至,將整個Spring框架納入自己的框架裡,導致無法滿足高效率的需求,引來眾多人的質疑,更陷入無共識的深淵裡。如今,極為完整又開放的Android免費來到台灣,其含有Java應用層和C++系統服務層,前者崇尚簡約之美,後者追求及高效率,即使在資源有限的小小手機裡,都能表現出力與美兼具特色。於是,台灣業界有了邏輯清晰完整的、可執行測試的Android開放原始程式,可做為台灣嵌入式軟體領域(包括手機、電信產業)最具有代表性的框架開發樣本。因此,以往台灣開發框架的不利因素已經不復存在了。台灣軟硬產業終於可以大力發展Android-like框架,掌握控制點,振翅高飛,翱翔天際了。
結論和建議
欲實現本文所敘述的台灣產業前景,最大的阻礙就在於人們的觀點了。例如,台北許多軟體業者基於從天空鳥瞰的「從上而下」的觀點(請見圖二),希望在Android平台上開發許多行動應「用」軟體系統,但是對於「平台之內」及「平台之下」的部分皆視為黑箱而莫不關心。當我們從台北搭乘高速鐵路到新竹,就會發現新竹許多硬體業者,持著由下而上之觀點,只關心著工研院所研發來搭配Android的雙核心PAC Duo多媒體處理器,可為國內IC晶片業者省下授權金並加速Android行動裝置上市。其對「平台之內」及「平台之上」的部分也視為黑箱而無太多關懷。如圖六所示。
《圖六 兩個觀點之間的黑暗鴻溝》 |
雖然從台北到新竹的距離僅約一百公里,但是40年來無論兩個觀點是如何地明亮和先進,都無法看清兩者之間的黑暗鴻溝。很可能是這道心智觀點的扭曲而造成的鴻溝,讓台北的應用軟體業日益式微,也讓竹科的優勢日益消失。即使當今極為先進的Android出現了,兩地業者仍然以舊觀點去看待它,則黑暗鴻溝將依就逐漸加深與擴大。那麼,何不加個新觀點:把Android視為白箱,打開了Android平台之後,會發現Android像一張桌子,含有桌面與桌腳,如圖七。
《圖七 兩個觀點之間的黑暗鴻溝消失了》 |
當台北觀點涵蓋了桌面,而新竹觀點涵蓋了桌腳時,黑暗鴻溝就消失了。竹科和工研院不再以提供新型PAC Duo處理器及其BSP為滿足了。因為提供PAC Duo處理器只是必備條件,還需要充分條件:提供BSP與Android框架之間的桌腳部份。並且善用Android的桌面與桌腳之間的「卡榫」(Hook)軟體機制,才能將桌腳配到桌面,成為完整的桌子。
基於桌面與桌腳之間的「卡榫」機制,就能隨時抽換桌腳,來發揮底層硬體組件之特色,也讓台灣硬體組件能不斷推陳出新。於是,Android不僅提供給台灣一條軟硬整合的實踐之路,同時,也如同「貨櫃」曾經帶給海運業和陸地運輸業無限蓬勃發展一般,將給予台灣無限繁榮之機會。
--作者為台灣Android論壇主席、同時也是遠聯科技嵌入式軟體技術顧問---
|