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 Android的Linux Kernal、HAL、Libararies、Runtime、Application Framework設計的理念和實現技術; 1.4 Android平臺與硬件、雲的微妙關係;
第2個主題:Android開機流程揭祕 2,1 第一個用戶進程剖析; 2,2 ServiceManager與Binder的關係; 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 HAL的Stub 4.4 hw_module_t與hw_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個主題:HAL和Linux Kernel 6.1 HAL Stub訪問和控制硬件 6.2 Android下的Linux Kernel剖析 6.3 Android 硬件的Driver 6.4 訪問Linux內核空間的Driver
第7個主題:Service與HAL Stub整合 7.1 以面向服務的觀點和方式與HAL交互 7.2 Library的中so庫文件的類型及C/S結構剖析 7.3 hw_get_module 7.4 獲取HAL Stub對象的代碼流程剖析 7.5 爲什麼HAL Stub的open方法必須提供supporting API(對設備的操做接口)給runtime;
第8個主題:Service、ServiceManager和Binder交互關係揭祕 8.1 Binder的第一號服務是誰?爲什麼要這樣設計和實現? 8.2 如何編寫Service 8.3 新的Service產生與ServiceManager和Binder交互流程 8.4 如何獲取一個Service? 8.5 Binder的生產者與消費者模式剖析
|
|
時間 |
內 容 |
備註 |
第二天 |
第9個主題:Binder與Shared Memory 9.1 Binder源代碼剖析 9.2 Shared Memory剖析 9.3 Binder是如何使用共享內存來完成進程間通訊的? 9.4 從代碼的角度來分析Binder使用Shared Memory的生產者與消費者模式
第10個主題:Dalvik VM 10.1 Dalvik VM的特色,Dalvik VM和JVM的比較 10.2 Dalvik VM的內存分佈及OOM(Out of Memory)的根本緣由和解決方案是什麼? 10.3 Preload Classes和 Preload Resources,ClassLoader到底在哪裏? 10.4 Dalvik與Java和C/C++
第11個主題:Android中的JNI編程 11.1 Java調用C/C++ 11.2 JNIEnv、JVM、JObject揭祕 11.3 C/C++建立Java對象、調用Java屬性和方法 11.4 JNI中的多線程編程 11.5 Facade Pattern在JNI中絕妙應用剖析 11.6 PnP(Plug and Play)
第12個主題:Android中的NDK編程 12.1 NDK與JNI關係揭祕 12.2 NDK開發的流程 12.3 採用NDK方式開發出的程序安裝和運行的內幕 12.4 NDK中的Java與C/C++相互調用 12.5 NDK中的多線程編程 12.6 關於Android軟件開發的標準化和可替換性揭祕
第13個主題:SystemServer與Framework中的Service 13.1 Zygote與SystemServer 13.2 SystemServer開啓Java世界的過程揭祕 13.3 Android Service和Native Service是如何關聯起來的? 13.4 Android Service與ServiceManager 13.5 如何把本身的服務加入到ServiceManager中?
第14個主題:把Java寫的 Service加入到Applciation Framework中 14.1 IInterface與CTS 14.2 Binder 14.3 AIDL 14.4 Java Service與Manager 14.5 SystemServer、ServiceManager
第15個主題:Android框架移植移植時的事件驅動機制 15.1 Android Service是如何應對硬件阻塞的? 15.2 開闢新的子線程並不斷的poll 15.3 Listener註冊 15.4 Callback 15.5 Application Framework中的Handler、Message、Looper、MessageQueue、 15.6 事件驅動機制實例
第16個主題:Manager、Service和完整的數據流 16.1,Manager和Service分離的原則 16.2,ANR問題 16.3,阻塞式的操做和非阻塞式操做 16.4,以實例說明Android中的從最底層到最上層的數據流
17.1 從技術角度揭祕雲,包括雲的關鍵技術和實現方法 17.2 在Native Service中整合Android與雲 17.3 在Application Framework中整合Android與雲 17.4 Android軟、硬、雲三位一體整合,包括模式、策略、實現技術
|
|