如何完全精通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. 應用程序註銷鍵盤消息接收通道的過程; |