framework主要是一些核心的文件,从后缀名为jar可以看出是是系统平台框架。
Android底层技术
為什麼要研究 Android Framework?這是一個軟體工程以及專案管理面的問題。Android Framework 是 Application Framework(應用軟體框架),所謂的 Framework 定義上指的是未完成(incomplete)或是不完善(not ready-to-use)的軟體程式庫(嚴格來說是 class library)。
近期收到有關「如何發展 Android 產品」的需求有增多的趨勢,而要解決的最核心問題就是「研究 Android Framework」。雖然目前與一些訓練單位合作,提供許多 Android Framework 方面的課程,但因為都是屬於純技術面,還缺少軟體工程以及專案管理面的內容,尚有不足的地方。
有鑑於此,花費近一個月的時間,整理了一套「標準顧問方案」為企業客戶提供這方面的 On-site 服務,以補齊不足之處。這套顧問方案共分為 5 個層面,並定名為「Android Framework 專案啟動顧問服務」,詳細說明如下。
Framework 是未完成品
「Framework 是參考實作、未完成品。」這是小弟過去在許多演講場合,和大家分享的觀念。
1. Framework is incomplete.
Framework 本身是不可用的,需要強化或填寫 framework 的空白,並設計相對應的應用程式,此時 framework 才能有作用。從學術上的定義來看,framework 本身是 class library,這套 class library 以物件導向的抽象觀念來設計,提供可重用(resuable)或可抽換的單元(component),並提供一套應用程式流程(flow)與反向控制點(Inverse of Control)。
2. Framework is not ready-to-use.
Framework 是 class library,不是一個作業系統。Android Framework 是一套 class library,Android 搭配 Linux kernel 成為 Android OS。因此,framework 必須搭配作業系統核心,並且完成產品端的軟體開發;此處所指的「軟體開發」經常性的工作有2項:1. 補齊驅動程式,2. 並且整合驅動程式與 application framework。
以上說明讓我們了解一點,「廠商需要著手完成收尾工作」,並且 framework 本身是採用物件導向觀念設計的 class library,這說明了研究 Android Framework 內部設計的重要性。
Android Framework 留下的空白
因為不完整,所以需要了解我們倒底要填寫什麼空白、擴充哪些功能、開發哪些 abstract class 等等,以建立完整可用的 Android Framework。通常,這是一項針對「產品規格」所進行的工作,即 Specification 階段就該完成的工作。
在專案啟動前期(in the begining)若沒有完善這項工作,將可能影響後面的實作工作(implementation)。
Framework 只能擴充不要修改
一個嚴格的軟體工程方法裡,針對 application framework 的完善工作,需要基於「基礎版」進行後續的程式碼撰寫,但是,這個「撰寫」(coding)的工作應該儘量避免修改原始的 framework 實作。即 application framework 具備 non-modifiable 的特性。
Framework 是一個物件導向設計的 class library,因此採用 override 方式就可以實現「擴充」框架的做法;了解 Android Framework 現有設計(OOD)並進行擴充,是重要的工程技術。
實現 3M 分支維護策略管理程式碼
Framework 是實體的物體(physical objects),例如:以 JAR 檔形式存在。Framework 不是抽象的,所以像是 GoF 便是一種非實體的觀念。如何在 Android Framework 原始碼裡,將擴充出來的部份產生實體物體,最基本的做法是建立獨立的 JAR 檔。當我們擴充或重用 Android Framework 時,就會面臨三個問題:1. 有哪些實體需要建立?2. 以及如何建立?3. 並且如何在不修改 Android Framework 程式碼的前提下完成這些工作?
過去在課程或演講經常所提出的「3M 分支維護策略」就是一個簡易的解決方案。
建立 Android Framework 開發主機
為客戶建立一台專門的開發主機,是最後一項工作。除了提供範例與開發環境外,也會給予一個基本的訓練。
咨詢方案規劃
Jollen’s Consulting 工作室聯合幾位不同領域的專家,在 Android Framework 的專案研發上做了一些討論,並且提出一個針對企業的咨詢方案,大綱如下:
《1 .觀念入門》Framework 是未完成品
《2. 實務應用》Android Framework 留下的空白
《3. 設計理論》Framework 只能擴充不要修改
《4. 分支管理》實現 3M 分支維護策略管理程式碼
《5. 開發環境》建立 Android Framework 開發主機
這是一套咨詢方案(Consulting),對象是「有意採用 Android 發展產品、想要正確並有效起步」的企業客戶。這套方案的方向是以「專案管理」、「產品開發」以及「軟體工程」做為出發點,雖然只是一個提供 Start-up 的 consulting 服務,但過去實行的成效良好,因此,將本方案公佈在這裡,期望 Jollen’s Consulting 的專家團隊,能在「企業導入 Android 工程技術」上有所貢獻。過去的做法,經常是採購實驗板,並自行摸索;本方案提供的是「Start Up」服務,比起自行摸索的做法,更有效率、也更整體。
本方案過去服務過大陸與美國的企業。一些做法,目前也應用在自有的開發項目上。本方案目前的做法是以2-3天的 On-site 顧問服務方式進行,客戶端建議的參與人員必須包含1名專職的PM。本方案的顧問團隊,也包含了 2 位具備 PMP 資格的專案管理師,能為大家在開發上的專案管理提供一些觀念。