Android架構設計和軟硬整合完整訓練

 Android架構設計和軟硬整合完整訓練程序員

 

Android架構設計和軟硬整合完整訓練:HAL&Framework&Native Service&Android Service&Best Practice
如何理解Android架構設計的初心並開發出搭載Android系統而且具有深度定製和軟硬整合能力特點產品,是本課程解決的問題。 編程

課程以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產品核心競爭力之一,蘋果和三星是這方面成功的經典案例; 異步

經過Android五大核心的洗禮,從而徹底具有Android系統二次開發和改造能力, 分佈式

進而開發出極具特點的Android產品。

 

學員基礎

      能看懂C/C++與Java

 

1、課程特點

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

l  貫通Android軟硬整合和HTML5端雲整合技術整個體系;

l  全程案例驅動,重在剖析案例代碼背後的設計思惟和商業密碼;

l  完全掌握Android HAL的背後的密碼;

l  完全掌握Android HAL的實現機制和技術

l  完全掌握Android Framwork的背後的密碼

l  完全掌握Android Framwork的設計思惟和理念

l  揭祕Android系統的運行的基石Binder

l  以Camera實例來完全剖析Native Service和Binder

l  完全實戰編寫Andorid應用程序的一切技術

l  掌握HTML5技術的源泉和精髓

2、培訓對象

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

l  對Android軟硬整合感興趣的人員;

l  但願迅速瞭解和掌握Android應用和底層技術的人員;

l  Android底層開發者;

l  Android框架設計和開發者;

l  Android產品架構師;

l  Android系統架構師;

l  Android應用程序開發者;

l  欲從事HTML5系統工做的人員(瀏覽器的開發、PhoneGap的的Plugin開發等)

l  但願從事移動終端開發的愛好者、工程師、程序員、以及相關行業的工程技術人員

3、 培訓目標

l  致力於打造在軟硬雲整合時代具備獨立思考能力和實踐能力的高素質IT人才;

l  Android高級工程師

l  Android移植工程師

l  Android框架開發工程師

l  Android項目經理

l  Android架構師

l  HTML5系統架構和開發人員

、學員基礎

      1) 具備Java基礎;

      2) 具備C和C++基礎更佳;

      3)對設計模式有全部瞭解對提高聽課效果會大有裨益;

 

、培訓方式

本課程共計3天,內容涵蓋Android底層、Android HAL、Android Runtime、Android Framework、Android Native Service、Android Binder、Android App開發、Android的Web開發等軟硬雲整合的的幾乎全部核心技術並揭祕HTML5技術的源泉和精髓,致力於打造在軟硬雲整合時代具備獨立思考能力和實踐能力的高素質IT人才;授課是以案例驅動爲基礎重在講解代碼背後的設計思惟和商業密碼;

王家林老師

中國目前惟一的移動互聯網和雲計算大數據集大成者;

雲計算大數據Spark亞太研究院院長和首席專家;


Spark亞太研究院院長和首席專家,Spark源碼級專家,對Spark潛心研究(2012年1月起)2年多後,在完成了對Spark的13不一樣版本的 源碼的完全研究的同時不斷在實際環境中使用Spark的各類特性的基礎之上,編寫了世界上第一本系統性的Spark書籍並開設了世界上第一個系統性的 Spark課程並開設了世界上第一個Spark高端課程(涵蓋Spark內核剖析、源碼解讀、性能優化和商業案例剖析)。Spark源碼研究狂熱愛好者, 醉心於Spark的新型大數據處理模式改造和應用。

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

 

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

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

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

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


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

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

 

、培訓內容

 

1個主題:Android架構揭祕

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

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

1,3 AndroidLinux KernalHALLibarariesRuntimeApplication Framework設計的理念和實現技術;

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

 

2個主題:Android開機流程揭祕

2,1 第一個用戶進程剖析;

2,2 ServiceManagerBinder的關係;

2,3 Zygote揭祕及其運做方式;

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

 

3個主題:Android中啓動一個新的應用程序揭祕

3,1 當咱們觸摸Android屏幕中Launcher上的一個應用程序的圖標的時候到底發生怎樣的調用過程?

3,2 應用程序的執行入口到底在哪裏?

3.3 一個新的Android應用程序的進程究竟是怎麼產生的?

 

4個主題:HAL揭祕

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

4.2 HAL的意外價值揭祕

4.3 HALStub

4.4 hw_module_thw_device_t

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

4.6 如何避免HAL Stub實現時的Dirty Code

 

5個主題:HAL Stub實戰

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

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

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

5.4 類型轉換問題

 

6個主題:HALLinux Kernel

6.1 HAL Stub訪問和控制硬件

6.2 Android下的Linux Kernel剖析

6.3 Android 硬件的Driver

6.4 訪問Linux內核空間的Driver

 

7個主題:ServiceHAL Stub整合

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

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

7.3 hw_get_module

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

7.5 爲什麼HAL Stubopen方法必須提供supporting API(對設備的操做接口)給runtime

 

8個主題:ServiceServiceManagerBinder交互關係揭祕

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

8.2 如何編寫Service

8.3 新的Service產生與ServiceManagerBinder交互流程

8.4 如何獲取一個Service

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

 

 

時間

 

備註

9個主題:BinderShared Memory

9.1 Binder源代碼剖析

9.2 Shared Memory剖析

9.3 Binder是如何使用共享內存來完成進程間通訊的?

9.4 從代碼的角度來分析Binder使用Shared Memory的生產者與消費者模式

 

10個主題:Dalvik VM

10.1 Dalvik VM的特色,Dalvik VMJVM的比較

10.2 Dalvik VM的內存分佈及OOM(Out of Memory)的根本緣由和解決方案是什麼?

10.3 Preload Classes Preload ResourcesClassLoader到底在哪裏?

10.4 DalvikJavaC/C++

 

11個主題:Android中的JNI編程

11.1 Java調用C/C++

11.2 JNIEnvJVMJObject揭祕

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

11.4 JNI中的多線程編程

11.5 Facade PatternJNI中絕妙應用剖析

11.6 PnP(Plug and Play)

 

12個主題:Android中的NDK編程

12.1 NDKJNI關係揭祕

12.2 NDK開發的流程

12.3 採用NDK方式開發出的程序安裝和運行的內幕

12.4 NDK中的JavaC/C++相互調用

12.5 NDK中的多線程編程

12.6 關於Android軟件開發的標準化和可替換性揭祕

 

13個主題:SystemServerFramework中的Service

13.1 ZygoteSystemServer

13.2 SystemServer開啓Java世界的過程揭祕

13.3 Android ServiceNative Service是如何關聯起來的?

13.4 Android ServiceServiceManager

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

 

14個主題:Java寫的 Service加入到Applciation Framework

14.1 IInterfaceCTS

14.2 Binder

14.3 AIDL

14.4 Java ServiceManager

14.5 SystemServerServiceManager

 

15個主題:Android框架移植移植時的事件驅動機制

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

15.2 開闢新的子線程並不斷的poll

15.3 Listener註冊

15.4 Callback

15.5 Application Framework中的HandlerMessageLooperMessageQueue

15.6 事件驅動機制實例

 

16個主題:ManagerService和完整的數據流

16.1ManagerService分離的原則

16.2ANR問題

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

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

 

17主題:Android軟、硬、雲三位一體整合

17.1 從技術角度揭祕雲,包括雲的關鍵技術和實現方法

17.2 Native Service中整合Android與雲

17.3 Application Framework中整合Android與雲

17.4 Android軟、硬、雲三位一體整合,包括模式、策略、實現技術

     

 

 

 

時間

 

備註

18主題:Android Application FramworkApp的關係

18.1 FrameworkApp的具體關係是什麼?

18.2 FrameworkApp的交互過程?

18.3 Framework如何掌控App的?

18.4 FrameworkAndroid的四大組件;

 

19主題:Android Application FramworkApp的關係

19.1 FrameworkApp的具體關係是什麼?

19.2 FrameworkApp的交互過程?

19.3 Framework如何掌控App的?

19.4 FrameworkAndroid的四大組件;

 

20主題: HandlerLooperMessageMessageQueue

20.1. Android的事件驅動模型

20.2. LooperMessageQueueHanlderMessage等源碼深度剖析

20.3. LooperMessageQueueHanlderMessage及多線程實戰案例

 

21主題:AsyncTASK異步線程技術

21.1. 使用AsyncTask的緣由及對AsyncTask的思考

21.2. AsyncTask代碼示例

21.3. AsyncTask源碼剖析

 

22堂課:ActivityManagerService原理與核心架構解析

22.1 AMS的架構解析和main剖析

22.2 AMS啓動一個Process架構解析源碼剖析

22.3 AMS啓動ActivityServiceBroadcastContentProvider架構解析與源碼剖析

22.4 Proxy-Stub

 

23堂課:WindowManagerService原理與核心架構解析

23.1 WindowManagerService架構解析

23.2 Window建立過程分析

23.3 ActivityWindowManagerService交互

23.4 WindowManagerService下的SurfaceFlinger

23.5 窗口的繪製和改變全程代碼解析

 

24個主題:Dalvik虛擬機架構設計和實現完全剖析

24.1 Dalvik虛擬機啓動過程剖析

24.2 Dalvik虛擬機運行過程剖析

24.3 DalvikC/C++Java交互的JNI方法註冊過程剖析

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

 

 

25個主題:源碼:經過BinderServiceManagerBpBinderBnBinderAIDL貫通Android整個體系的架構核心120分鐘)

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

25.2. 源碼剖析ServerClient是如何得到Service Manager接口的?

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

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

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

相關文章
相關標籤/搜索