Moko365 講師暨技術總監,Flowchain 基金會(新加坡)創辦人。Jollen 在 Embedded Linux 與 Linux Device Driver 有超過 20 年的研發與企業內訓經驗,在 Android Framework 軟體架構方面,也有 15 年的授課經驗,更長期在科技業擔任 Linux & Android 技術顧問。
Jollen 在 Linux 基金會舉辦的 Open Source Summit 全球開發者社群大會上,多次擔任講者發表演說,在開源領域有多年經驗。此外,於 2017 年開始,在歐洲與加拿大發表有關區塊鏈與去中心化 IoT 架構的論文,並獲 ACM SIGBED Review 刊登。Jollen 在 2016 年創辦 Flowchain 基金會,開發原創區塊鏈作業系統技術,提供 IoT 與 Blockchain 技術整合服務,並獲得多項相關國際專利。更多資訊,請參考 Jollen’s Blog
仕橙版第 36 期
Android HAL 是什麼技術?HAL(Hardware Abstract Layer 硬體抽象層)是 Android Framework 的一個架構層,用來銜接應用程式與與硬體,這 Android 的軟硬整合關鍵技術,當然也是學習 Android Framework 的第一堂課。
HAL 是 Android Framework 與底層硬體整合的關鍵技術,HAL 將 Android 框架以及 Linux Device Driver 整合在一起;這是開發 Android 產品的必修課。HIDL 又是什麼?HIDL 全名是 Hardware Interface Description Lanague,這是 Android 在歷經 10 年的發展後,最要的架構更新。HIDL 基於原先的 HAL 架構與設計,為 Android 加上了更為完整的「軟硬整合描述語言」,讓廠商(Vendor)更容易將 AOSP 整合至自有硬體。
本課程由 Jollen Chen 講師主講,Jollen 講師是台灣第一位研究 Android HAL & Framework 的講師,至今已有近 10 年的研究、開發與授課經驗,有最完整 Android HAL 與 Framework 經驗。本課程是進修 Android HAL、HIDL 與 Framework 的首選。
本課程內容累積近 100 期的公開課與企業內訓經驗,能幫助您建立 Android Framework 與 HAL & HIDL 整合的「研發能力、解決問題的能力」,而不只是操作性的能力建立。Android 框架的開發要考慮架構,要先做設計(OOD),要驗證設計的正確性,同時也要達到重用(Design Reuse)框架設計的要求;所以開發 Android 框架,「是在一套系統化且制式的規模下進行,寫 code 受到規範。」本課程的目標,是帶領學員,建立 Android 框架架構的觀念,並練習撰寫正確的程式碼。本課程包含 Android 4/5/6/7 內容,範例可支援 Android 1.6/2.x/4.x/5.x/6.x/7.x。
本課於 2017 年 11 月 10 日進行第五次改版,加入了 Android HIDL 與 Treble 的內容,是本課程開設近 10 年來,最重要的一次改版。
本課於 2014 年 12 月 09 日進行第四次改版,本課程於 2009 年北京首開至今,不但是兩岸最早的 HAL 課程,也是課程資歷最久的 HAL 與框架整合課程。第四版課程更新至 Android 5.0 並針對幾個新的設計進行分析。
AF101
HAL(Hardware Abstract Layer 硬體抽象層)是 Android Framework & Application 與底層硬體整合的關鍵技術。移植 Android 到不同平臺時必須整合 Linux kernel 的驅動程式,需要考量 Android Service、HAL stub 以及「整合驅動程式到 Android 框架」架構面的設計(Design)。
了解 HAL 及其設計,是開發 Android 產品的第一門課。透過分析 HAL 的設計,能建立基礎的 Android 框架知識。Jollen Chen 說:「開發 Android 軟件是『設計導向思惟』,編寫代碼(Coding)並不等於做軟件(Software),寫 Code 可以很自由心態」意思是,可根據自已的想法發揮,不受任何限制地自由發揮。
Android 框架的開發要考慮架構,要先做設計(OOD),要驗證設計的正確性,同時也要達到重用(Design Reuse)框架設計的要求;所以開發 Android 框架,「是在一套系統化且制式的規模下進行,寫 Code 受到規範。」
本課程由具備 Android 產品開發經驗,以及產品操盤實務經驗的技術專家 Jollen 主講,是特別針對想事產品開發,以及想提升團隊 Android 架構能力者所規劃。課程深入淺出,是目前國內少見能以至簡方式介紹實務 Android 框架與架構的課程。旨在培養實務的 Android 能力,並協助企業提升研發團隊的 Android 架構能力。
Jollen 老師將以 Mokoid Open Source Project(MOSP)範例,仔細分析 Android 框架的設計方法與架構;MOSP 是 Jollen 老師特別發展的實例,並已開源至 Google Code 上。
課程主軸為綜合說明 Android 框架的核心架構:HAL、Binder、View System 與 Native Service,想理解框架,就要深入這四大子系統。
上課時數:18 小時,共計 3 天。
時程 | 上課大綱 | 講師 |
第 1 天 09:30 am-04:30 pm |
第 01 堂課:Hardware Abstract Layer 架構與驅動模組開發 1.1 Service 與 Manager 的意義與用途 1.2 libhardware 與 HAL API 1.3 Stub & Module 的觀念 1.4 HAL Stub Analysis and Design(OOAD) 1.5 HAL Stub Class w 1.6 HAL Stub Interface 1.7 Refactoring HAL Stub(Android 5.0) 第 02 堂課:Android Service 架構與 SystemServer 整合開發 2.1 Zygote & SystemServer 介紹 2.2 ServiceManager 介紹 2.3 IPC、 Remote method call 與 Binder 觀念說明 2.4 AIDL 介紹與 IInterface 設計觀念解析 2.5 Activity & ApplicationContext 2.6 ServiceManager 第 03 堂課:Android Framework 架構原理分析(OOD) 3.1 JNI 開發 3.2 Remote Object 觀念與 IBinder 介紹 3.3 如何以 Proxy Object 整合 Android Service 3.4 Handler 與 Message 的解析與實作細節 3.5 Doing Long Operations 3.6 Design Patterns of Android Framework 3.7 Refactoring Native Service(Android 5.0) |
Jollen |
第 2 天 09:30 am-04:30 pm |
第 04 堂課:Android Process 模式與系統程式 4.1 Component 與 Main Thread 4.2 Android Process Model 4.3 Class Preloading 第 05 堂課:Manager API & Context 5.1 Introduction Context 5.2 getSystemService() 5.3 IPC & AIDL 5.4 IPC with Android Service using Binder Proxy 第 06 堂課:Android HIDL 與 Testing Treble 6.1 Legacy HAL 與 Passthrough HAL 設計與實作 6.1 Binderized HAL 設計與實作 6.2 HIDL 使用步驟與上機練習 6.3 使用 C++ 實作 HIDL 6.4 Device Tree Overlays (DTOs) i 6.5 使用 Vendor Native Development Kit (VNDK) |
Jollen |
第 3 天 09:30 am-04:30 pm |
第 07 堂課:Native Service 與 Binder IPC 原理與核心架構解析 7.1 使用 IInterface(Java vs C++) 7.2 使用 BnInterface 與 BpInterface 7.3 實作 Binder Protocol 7.4 Implementation of Native Service 與 Binder IPC Proxy 7.5 Proxy Design Pattern 7.6 .asInterface() 深入解析 7.7 BpInterface, Proxy object 與 IPC transaction 第 08 堂課:View System 設計模式與實現原理解析 8.1 Introduction to Activity, Window and View 8.2 Architecture of Android View System 8.3 Surface and Canvas 8.4 The flow of drawing: from View to SurfaceFlinger 8.5 The MVC design of View Hierarchy 8.6 The Composite pattern of View Hierarchy |
Jollen |
● 看得懂 Java 與 C 語言
● 基本的 Linux 終端機環境操作
NT$ 20,800(上課時數 18 小時,共計 3 天)
● 開課前一週,天天早安鳥;開課前完成繳費享有「早安鳥」 88 折優惠價(NT$ 18,300),我要早安鳥報名
● 持 VIP Code(仕橙會員卡),再折 NT$ 1,000
● 日期:2018 年 07 月 21、22、28日,仕橙版第 36 期
● 時間:09:30~12:00,13:00~16:30 (09:00 AM 開始報到)
台北市博愛路(詳細教室資訊另行公佈)
● 下載報名表(.doc)
● 下載報名表(.pdf)
● 2014 年 12 月 09 日:第四次改版,課程內容更新至 Android 5.0,並增加 Android 5.0 的重構分析。
● 2012 年 12 月 24 日:第三次改版,課程時數由 12 小時大幅擴充為 18 小時,課程份量增加 50%。加深 Native Service 主題,並新增 Binder 與 View 系統的解析。
本課程由仕橙3G教室 (Moko365 Inc) 開發與製作,內容由仕橙研策科技有限公司版權所有,並保留所有權利。未經書面授權同意,請勿轉載、引用或複製內文。本公司業聘請承展智權暨商務法律事務所陳丁章律師、李子聿律師等,擔任本公司電子商務及智權法務諮詢顧問,並此籲請各界尊重本公司之智慧財產權。
Moko365 (仕橙3G教室) 成立於 2009 年,專注於 Android / Linux / Node.js / IoT / Blockchain 技術領域,是老字號的 Professional Training Center,為各大企業提供技術顧問與培訓服務,並協助企業進行人才養成。企業客戶涵蓋科技、金融、物流、傳播等,服務國內外近 100 企業;包含公開課程在內,累積訓練超過 10,000 人次。更多有關資訊,請瀏覽 www.moko365.com