王家林的81門一站式雲計算分佈式大數據&移動互聯網解決方案課程第10門課程:完全精通Android系統架構與實戰

如何完全精通Android Framework並開發出搭載Android系統而且具有深度定製和軟硬整合能力特點產品,是本課程解決的問題。web

課程以Android的五大核心:HAL、Binder、Native Service、Android Service(並以AMS和WMS爲例)、View System爲主軸,一次性完全掌握Android的精髓。編程

之因此是開發Android產品的必修課,緣起於:瀏覽器

1,     HAL是Android Framework&Application與底層硬件整合的關鍵技術和必修技術;多線程

2,     Native Service 對上層來講表明了硬件,是Android底層真正的精髓;架構

3,     Android Service是應用程序的控制核心,應用程序的一切行爲均有Android Service掌控;框架

4,     Binder 是Android系統運行的基石,不掌握Binder就永遠沒法掌握Android;分佈式

5,     View系統的差別化對消費者而言是Android產品核心競爭力之一,蘋果和三星是這方面成功的經典案例;ide

經過Android五大核心的洗禮,完全精通Android Framework,從而徹底具有Android系統二次開發和改造能力,進而開發出極具特點的Android產品。函數

課程特點  oop

創建360度的Android產品研發能力和解決問題的能力,可以獨立開發並深度定製出搭載Android系統的產品;

培訓對象

手機、平板、智能電視、車載系統、智能家居設備(例如微波爐、防盜門、電冰箱)等全部想使用Android的硬件廠商;

想理解Android運行機制的軟件開發者;

 

學員基礎

      能看懂C/C++與Java

 

王家林老師

Android架構師、高級工程師、諮詢顧問、培訓專家;

通曉Android、HTML五、Hadoop,迷戀英語播音和健美;

致力於Android、HTML五、Hadoop的軟、硬、雲整合的一站式解決方案;

國內最先(2007年)從事於Android系統移植、軟硬整合、框架修改、應用程序軟件開發以及Android系統測試和應用軟件測試的技術專家和技術創業人員之一。

HTML5技術領域的最先實踐者(2009年)之一,成功爲多個機構實現多款自定義HTML5瀏覽器,參與某知名的HTML5瀏覽器研發;

Hadoop源碼級專家,曾負責某知名公司的類Hadoop框架開發工做,專一於Hadoop一站式解決方案的提供,同時也是雲計算分佈式大數據處理的最先實踐者之一,Hadoop的狂熱愛好者,不斷的在實踐中用Hadoop解決不一樣領域的大數據的高效處理和存儲,如今正負責Hadoop在搜索引擎中的研發中國電信的屢次Hadoop培訓,花旗銀行的Hadoop內訓,金立手機的Hadoop內訓等,著有《雲計算分佈式大數據Hadoop實戰高手之路---從零開始》《雲計算分佈式大數據Hadoop實戰高手之路---高手崛起》《雲計算分佈式大數據Hadoop。實戰高手之路---高手之巔》等;

超過10本的IT暢銷書做者;

培訓內容

 

第一天

第1個主題:Android架構揭祕(20分鐘)

1.Google是如何經過Android支持、掌控全球的硬件廠商和應用程序開發者的?

2.Android控制力的源泉是什麼?技術上如何實現?

3.Android的Linux Kernal、HAL、Libararies、Runtime、Application Framework設計的理念和實現技術;

4.Android平臺與硬件、雲的微妙關係;

 

第2個主題:智能指針60分鐘)

1. 輕量級指針實現原理和案例剖析;

2. 強指針實現原理和案例剖析;

3.弱指針實現原理和案例剖析;

 

第3個主題:架構:Service、ServiceManager和Binder交互關係揭祕(30分鐘)

1 Binder的第一號服務是誰?爲什麼要這樣設計和實現?

2 如何編寫Service

3 新的Service產生與ServiceManager和Binder交互流程

4 如何獲取一個Service?

5 Binder的生產者與消費者模式剖析

 

第4個主題:源碼:經過Binder、ServiceManager、BpBinder、BnBinder、AIDL貫通Android整個體系的架構核心(120分鐘)

1. 源碼剖析Service Manager是如何成爲一個守護進程的?

2. 源碼剖析Server和Client是如何得到Service Manager接口的?

3. 源碼剖析Server是如何把本身的服務啓動起來的?Service Manager在Server啓動的過程當中是如何爲Server提供服務的?

4.  源碼剖析Service Manager是如何爲Client提供服務的?

5. Android系統進程間通訊Binder機制在應用程序框架層的Java接口源代碼分析

第5個主題:Android開機流程揭祕(60分鐘)

1. 第一個用戶進程剖析;

2. ServiceManager與Binder的關係;

3. Zygote揭祕及其運做方式;

4.Android中的第一個Java進程揭祕,第一個Java進程和ServiceManager的關係及代碼實現;

 

第6個主題:Android中啓動一個新的應用程序揭祕(30分鐘)

1.Launcher經過Binder進程間通訊機制通知ActivityManagerService,它要啓動一個Activity;

2.ActivityManagerService經過Binder進程間通訊機制通知Launcher進入Paused狀態;

3.ActivityManagerService建立一個新的進程,用來啓動一個ActivityThread實例;

4.ActivityThread經過Binder進程間通訊機制將一個ApplicationThread類型的Binder對象傳遞給ActivityManagerService,以便之後ActivityManagerService可以經過這個Binder對象和它進行通訊;

 

第7個主題:HAL揭祕(20分鐘)

1. HAL被加入Android中的真正歷史緣由分析

2. HAL的意外價值揭祕

3. HAL的Stub

4. hw_module_t與hw_device_t

5. C語言如何實現繼承來知足HAL Stub的設計目的?包括內存結構分析和代碼風格討論等

6. 如何避免HAL Stub實現時的Dirty Code?

 

第8個主題:HAL Stub實戰(30分鐘)

1. 用面向對象的思想分析、設計、實現Stub

2. hw_module_t的子類和hw_device_t的子類的關係以及這種關係的優點

3.在結構體中如何實現C函數的調用?hw_module_t的子類在代碼中又是如何和hw_device_t的子類交互的?

4. 類型轉換問題

 

第9個主題:HAL和Linux Kernel(10分鐘)

1. HAL Stub訪問和控制硬件

2. Android下的Linux Kernel剖析

3. Android 硬件的Driver

4. 訪問Linux內核空間的Driver

 

第10個主題:Service與HAL Stub整合(60分鐘)

1. 以面向服務的觀點和方式與HAL交互

2. Library的中so庫文件的類型及C/S結構剖析

3. hw_get_module

4. 獲取HAL Stub對象的代碼流程剖析

5. 爲什麼HAL Stub的open方法必須提供supporting API(對設備的操做接口)給runtime;

 

 

 

時間

內  容

備註

次日

第1個主題:Dalvik虛擬機架構設計和實現完全剖析(90分鐘)

1 Dalvik虛擬機啓動過程剖析

2 Dalvik虛擬機運行過程剖析

3 Dalvik的C/C++與Java交互的JNI方法註冊過程剖析

4 Dalvik關於進程和線程建立與管理剖析

 

第2個主題:Android中的JNI和NDK編程(60分鐘)

1. Java調用C/C++

2. JNIEnv、JVM、JObject揭祕

3. C/C++建立Java對象、調用Java屬性和方法

4. JNI中的多線程編程

5. Facade Pattern在JNI中絕妙應用剖析

6. PnP(Plug and Play)

7. NDK與JNI關係揭祕

 

第3個主題:SystemServer與Framework中的Service(60分鐘)

1. Zygote與SystemServer

2. SystemServer開啓Java世界的過程揭祕

3. Android Service和Native Service是如何關聯起來的?

4. Android Service與ServiceManager

5. 如何把本身的服務加入到ServiceManager中?

 

第4個主題:把Java寫的 Service加入到Applciation Framework中(60分鐘)

1. IInterface與CTS

2. Binder

3. AIDL

4. Java Service與Manager

5. SystemServer、ServiceManager

 

第5個主題:Android框架移植移植時的事件驅動機制(60分鐘)

1. Android Service是如何應對硬件阻塞的?

2. 開闢新的子線程並不斷的poll

3. Listener註冊

4. Callback

5. Application Framework中的Handler、Message、Looper、MessageQueue、

6. 事件驅動機制實例

 

第6個主題:Manager、Service和完整的數據流(60分鐘)

1,Manager和Service分離的原則

2,ANR問題

3,阻塞式的操做和非阻塞式操做

4,以實例說明Android中的從最底層到最上層的數據流

 

第7個主題:Android Application Framwork和App的關係(30分鐘)

1. Framework和App的具體關係是什麼?

2. Framework和App的交互過程?

3. Framework如何掌控App的?

4. Framework與Android的四大組件;

 

第8個主題: Handler、Looper、Message、MessageQueue(30分鐘)

1. Android的事件驅動模型

2. Looper、MessageQueue、Hanlder、Message等源碼深度剖析

3. Looper、MessageQueue、Hanlder、Message及多線程實戰案例

4. Native/Java層的Looper/Handler的原理和交互

 

 

時間

內容

備註

第三天

第1個主題:ContentProvider(60分鐘)

1 ContentResolver與ApplicationContentResolver

2 註冊過程

3 CursorWindow

4 ContentProviderProxy

5 Parcel

6 Transport

7 Cursor打開關閉問題,如何規範使用,避免形成泄露

 

第2個主題:ActivityManagerService的各類做用和原理(60分鐘)

1 AMS的架構解析

2 AMS是怎麼成爲應用程序背後的控制者的

3 生命週期的管理

4 組件之間的交互

 

第3個主題:PackageManagerService(40分鐘)

1框架介紹

2如何管理apk

3 Apk在內置存儲器上的安裝流程

4 Apk在Sdcard上的安裝流程

5. Apk在內置和外置存儲器上的遷移流程

 

第4個主題:Intent完全剖析(30分鐘)

1 Android intent設計原則

2 Android intent實現

3複雜度和靈活性之間平衡

 

第5個主題:WindowManagerService原理與核心架構解析(180分鐘)

1 WindowManagerService和ActivityManagerService進行交互(30分鐘)

2 WindowManagerService顯示Activity組件的啓動窗口(Starting Window)的過程分析(30分鐘)

3 WindowManagerService切換Activity窗口(App Transition)的過程分析(30分鐘)

4 WindowManagerService顯示窗口動畫(60分鐘)

5 WindowManagerService與SurfaceFlinger的交互(30分鐘)

 

 

 

時間

內容

備註

第四天

第1個主題: SurfaceFlinger(180分鐘)

1. Android系統的開機畫面顯示過程分析;

2. Android幀緩衝區(Frame Buffer)硬件抽象層(HAL)模塊Gralloc的實現原理分析;

3. Android應用程序與SurfaceFlinger服務的鏈接過程分析;

4.Android應用程序與SurfaceFlinger服務之間的共享UI元數據(SharedClient)的建立過程分析;

5. Android應用程序請求SurfaceFlinger服務建立Surface的過程分析;

6. SurfaceFlinger服務的啓動過程分析;

7. SurfaceFlinger服務對幀緩衝區(Frame Buffer)的管理分析;

8. SurfaceFlinger服務的線程模型分析;

9. SurfaceFlinger服務渲染應用程序UI的過程分析;

 

 

第2個主題:窗口(180分鐘)

1.上下文環境(Context)的建立過程分析;

2.窗口對象(Window)的建立過程分析;

3.視圖對象(View)的建立過程分析;

4.窗口與WindowManagerService服務的鏈接過程分析;

5.  繪圖表面(Surface)的建立過程分析;

6.  測量(Measure)、佈局(Layout)和繪製(Draw)過程分析;

 

第3個主題:WMS(120分鐘)

1. WindowManagerService計算Activity窗口大小的過程分析

2. WindowManagerService對窗口的組織方式分析

3. WindowManagerService對輸入法窗口(Input Method Window)的管理分析

4. WindowManagerService對壁紙窗口(Wallpaper Window)的管理分析

5. WindowManagerService計算窗口Z軸位置的過程分析

6. TextView的實現原理分析;

7. SurfaceView的實現原理分析;

 

第4個主題:輸入法窗口管理(90分鐘)

1. InputManager的啓動過程分析 ;

2. 應用程序註冊鍵盤消息接收通道的過程分析;

3. InputManager分發鍵盤消息給應用程序的過程分析;

4. 應用程序註銷鍵盤消息接收通道的過程;

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息
相關文章