Android HAL & Framework: 軟硬整合實作訓練-第 34 期
Android HAL 是什麼技術?HAL(Hardware Abstract Layer 硬體抽象層)是 Android Framework 的一個架構層,用來銜接應用程式與與硬體,這 Android 的軟硬整合關鍵技術,當然也是學習 Android Framework 的第一堂課。—Moko365 Team
課程方向
HAL 是 Android Framework 與底層硬體整合的關鍵技術,HAL 將 Android 框架以及 Linux Device Driver 整合在一起;這是開發 Android 產品的必修課。本課程邀請到 Jollen Chen 講師主講,Jollen 是台灣目前唯一具備相關產品開發經驗的 Android HAL 與 Framework 講師。
品質特色
本課程內容累積超過 60 期的公開課與企業內訓經驗,能幫助您建立 Android 框架與 HAL 驅動程式整合的「研發能力、解決問題的能力」,而不只是操作性的能力建立。Android 框架的開發要考慮架構,要先做設計(OOD),要驗證設計的正確性,同時也要達到重用(Design Reuse)框架設計的要求;所以開發 Android 框架,「是在一套系統化且制式的規模下進行,寫 Code 受到規範。」本課程的目標,是帶領學員,建立 Android 框架架構的觀念,並練習撰寫正確的程式碼。本課程包含 Android 4.x/5.0 內容,範例可支援 Android 1.6/2.x/4.x/5.0。
更新通知
本課於 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 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 Instance of Dalvik VM 4.3 Introduction of Dalvik VM 4.4 Android Process Model 4.5 Class Preloading 4.6 Dalvik VM Instantiation & Initialization 第 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 堂課:Native Service 實現完整解析 6.1 使用 IInterface (Java vs C++) 6.2 使用 BnInterface 與 BpInterface 6.3 實作 Binder Protocol 6.4 Implementation of Native Service(Android 5.0) 6.5 Implement Native Binder Proxy |
Jollen |
| 第 3 天 09:30 am–04:30 pm |
第 07 堂課:Binder 原理與核心架構解析 7.1 Proxy Design Pattern 7.2 .asInterface() 深入解析 7.3 Linux Binder 驅動解析 7.4 BpInterface, Proxy object 與 IPC transaction 7.5 Architect and Refactoring of SensorManager(Android 5.0) 第 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 天)
優惠方案
本課正提供預約報名優惠。預約報名課程,直接享有 69 折(NT$ 14,300)的最棒折扣:我要預約報名(請等候繳費通知、暫無須繳費)
預約報名優惠已為最低優惠,無法再合併其他優惠(VIP與折價券)
開課時間
日期:2016 年 日期未定,仕橙版第 34 期
時間:09:30~12:00,13:00~16:30(09:00 AM 開始報到)
開課紀錄
- 仕橙版第 34 期(暨 Jollen’s Consulting 第 41 期)預約中(台北)
- 仕橙版第 33 期(暨 Jollen’s Consulting 第 40 期)已於 2016 年 04 月 16 日結訓(台北)
- 仕橙版第 32 期(暨 Jollen’s Consulting 第 39 期)已於 2015 年 09 月 05 日結訓(台北)
- 仕橙版第 31 期(暨 Jollen’s Consulting 第 38 期)已於 2015 年 01 月 24 日結訓(台北)
- 仕橙版第 30 期(暨 Jollen’s Consulting 第 37 期)已於 2014 年 05 月 10 日結訓(台北)
- 仕橙版第 29 期(暨 Jollen’s Consulting 第 36 期)已於 2013 年 11 月 16 日結訓(台北)
- 仕橙版第 28 期(暨 Jollen’s Consulting 第 35 期)已於 2013 年 03 月 09 日結訓(台北)
- 仕橙版第 27 期(暨 Jollen’s Consulting 第 34 期)已於 2012 年 11 月 29 日結訓(北京)
- 仕橙版第 26 期(暨 Jollen’s Consulting 第 33 期)已於 2012 年 10 月 25 日結訓(深圳)
- 仕橙版第 25 期(暨 Jollen’s Consulting 第 32 期)已於 2012 年 07 月 19 日結訓(北京)
- 仕橙版第 24 期(暨 Jollen’s Consulting 第 31 期)已於 2012 年 04 月 27 日結訓(深圳)
- 仕橙版第 23 期(暨 Jollen’s Consulting 第 30 期)已於 2012 年 04 月 22 日結訓(台北)
- 仕橙版第 22 期(暨 Jollen’s Consulting 第 29 期)已於 2011 年 12 月 18 日結訓(上海)
- 仕橙版第 21 期(暨 Jollen’s Consulting 第 28 期)已於 2011 年 12 月 04 日結訓(台北)
- 仕橙版第 20 期(暨 Jollen’s Consulting 第 27 期)已於 2011 年 09 月 18 日結訓(台北)
- 仕橙版第 19 期(暨 Jollen’s Consulting 第 26 期)已於 2011 年 08 月 30 日結訓(北京)
- 仕橙版第 18 期(暨 Jollen’s Consulting 第 25 期)已於 2011 年 08 月 26 日結訓(深圳)
- 仕橙版第 17 期(暨 Jollen’s Consulting 第 24 期)已於 2011 年 05 月 29 日結訓(台北)
- 仕橙版第 16 期(暨 Jollen’s Consulting 第 23 期)已於 2011 年 05 月 15 日結訓(上海)
- 仕橙版第 15 期(暨 Jollen’s Consulting 第 22 期)已於 2011 年 03 月 20 日結訓(台北)
- 仕橙版第 14 期(暨 Jollen’s Consulting 第 21 期)已於 2011 年 03 月 29 日結訓(深圳)
- 仕橙版第 13 期(暨 Jollen’s Consulting 第 20 期)已於 2011 年 01 月 09 日結訓(台北)
- 仕橙版第 12 期(暨 Jollen’s Consulting 第 19 期)已於 2010 年 11 月 28 日結訓(台北)
- 仕橙版第 11 期(暨 Jollen’s Consulting 第 18 期)已於 2010 年 11 月 05 日結訓(北京)
- 仕橙版第 10 期(暨 Jollen’s Consulting 第 17 期)已於 2010 年 09 月 21 日結訓(北京)
- 仕橙版第 09 期(暨 Jollen’s Consulting 第 16 期)已於 2010 年 08 月 29 日結訓(台北)
- 仕橙版第 08 期(暨 Jollen’s Consulting 第 15 期)已於 2010 年 06 月 29 日結訓(深圳)
- 仕橙版第 07 期(暨 Jollen’s Consulting 第 14 期)已於 2010 年 06 月 13 日結訓(台北)
- 仕橙版第 06 期(暨 Jollen’s Consulting 第 13 期)已於 2010 年 05 月 25 日結訓(北京)
- 仕橙版第 05 期(暨 Jollen’s Consulting 第 12 期)已於 2010 年 05 月 09 日結訓(台北)
- 仕橙版第 04 期(暨 Jollen’s Consulting 第 11 期)已於 2010 年 04 月 24 日結訓(上海)
- 仕橙版第 03 期(暨 Jollen’s Consulting 第 10 期)已於 2010 年 03 月 29 日結訓(深圳)
- 仕橙版第 02 期(暨 Jollen’s Consulting 第 09 期)已於 2010 年 01 月 10 日結訓(台北)
- 仕橙版第 01 期(暨 Jollen’s Consulting 第 08 期)已於 2009 年 10 月 25 日結訓(台北)
上課地點
台北市博愛路 (詳細教室資訊另行公佈)