掌握Android從底層開發到框架整合技術到上層App開發及HTML5的所有技術;程序員
一次完全的Android架構、思想和實戰技術的洗禮;web
完全掌握Andorid HAL、Android Runtime、Android Framework、Android Native Service、Android Binder、Android App、Android Testing、HTML5技術的源泉和精髓等核心技術,不只僅是技術和代碼自己,更重要的是背後的設計思想和商業哲學。數據庫
1、課程特點編程
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 欲從事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人才;授課是以案例驅動爲基礎重在講解代碼背後的設計思惟和商業密碼;
王家林老師
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。實戰高手之路---高手之巔》等;
六、培訓內容
第一天 |
第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編程 11.1 NDK與JNI關係揭祕 11.2 NDK開發的流程 11.3 採用NDK方式開發出的程序安裝和運行的內幕 11.4 NDK中的Java與C/C++相互調用 11.5 NDK中的多線程編程 11.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個主題:Android軟、硬、雲三位一體整合 17.1 從技術角度揭祕雲,包括雲的關鍵技術和實現方法 17.2 在Native Service中整合Android與雲 17.3 在Application Framework中整合Android與雲 17.4 Android軟、硬、雲三位一體整合,包括模式、策略、實現技術
|
|
時間 |
內 容 |
備註 |
第三天 |
第18個主題:Android Application Framwork和App的關係 18.1 Framework和App的具體關係是什麼? 18.2 Framework和App的交互過程? 18.3 Framework如何掌控App的? 18.4 Framework與Android的四大組件;
第19個主題:Android Application Framwork和App的關係 19.1 Framework和App的具體關係是什麼? 19.2 Framework和App的交互過程? 19.3 Framework如何掌控App的? 19.4 Framework與Android的四大組件;
第20個主題: Handler、Looper、Message、MessageQueue 20.1. Android的事件驅動模型 20.2. Looper、MessageQueue、Hanlder、Message等源碼深度剖析 20.3. Looper、MessageQueue、Hanlder、Message及多線程實戰案例 第21主題:AsyncTASK異步線程技術 21.1. 使用AsyncTask的緣由及對AsyncTask的思考 21.2. AsyncTask代碼示例 21.3. AsyncTask源碼剖析
第22個主題:Android測試 22.1.Android代碼測試的好處,測試的方式 22.2.JUnit框架解析 22.3.測試用例的生命週期 22.4.自動化測試 22.5.源碼剖析
第23個主題:廣播接受者BroadcastReceiver,短信監聽器案例(接受到短信後上傳到服務器或發送到指定的號碼或者發送到指定的郵件中) 23.1.剖析廣播接收者,與JMS的比較,廣播接受者的IoC原理 23.2.短信監聽Android客戶端 23.3.服務器端搭建 23.4.經過網絡把接收到的短信上傳到服務器 23.5.把接收到的短信發送到指定的手機號碼或者郵件中 23.6.BroadcastReceiver的的生命週期和注意事項以及5秒鐘生命響應時間的解決方案
第24個主題:服務Service,電話監聽器(每次開機的時候自動開機,電話來時錄音並上傳到服務器) 24.1.詳細剖析Service 24.2.構建電話監聽的Service 24.3.使用BroadcastReceiver監聽開機事件,並在開機時啓動電話監聽的Service 24.4.上傳音頻文件到服務器 24.5.關於Android安全體系的思考
第25個主題:ContentProvider背景、用途,如何構建ContentProvider,UriMatcher,ContentUris,對CotentProvider進行單元測試、源代碼分析 25.1.ContentProvider背景、用途 25.2.構建ContentProvider的詳細步驟 25.3.對URI的完全剖析 25.4.分析UriMatcher,ContentUris 25.5.對ContentProvider的業務層代碼進行單元測試 25.6.ContentProvider的源代碼剖析 第26主題:基於通信錄的開發 26.1. 通信錄的數據庫和數據表分析 26.2. 通信錄ContentProvider的源碼剖析 26.3. 獲取全部的聯繫人信息 26.4.添加聯繫人 26.5.如何處理添加通信錄記錄時的事物問題
第27個主題:斷點續傳(一)相似迅雷的多線程下載器(適用於任何類型的文件下載) 27.1,多線程下載斷點續傳原理和流程圖 27.2,下載文件時Http協議協議詳解 27.3,多線程下載斷點續傳程序:設計服務端和Android端 27.4,Android端的內容涉及IoC、多線程、SQLite數據庫、Handler、Http協議、緩存處理、意外關機時候的處理、編寫框架、MVC、Service、Android中的I/O流、代碼調試、Activity的生命週期等 27.5,單元測試 27.6,軟件調試
第28個主題:斷點續傳(二)多線程斷點文件上傳器(適用於任何類型的文件上傳) 28.1,斷點續傳原理和流程圖 28.2,上傳文件的Http協議詳解 28.3,自定義本身的文件傳輸協議 28.4,服務端程序的編寫:文件的下載與實時數據的記錄、監聽模式、亂碼問題的處理、併發問題、黑客安全問題 28.5,客戶端程序的編寫:Android內存溢出問題,Android中的Socket編程、大文件的傳輸、大文件傳輸時候的安全問題 28.6,單元測試 28.7,軟件調試 第29個主題:Android客戶端表單數據的上傳 29.1,上傳基本的數據類型 29.2,上傳圖片等附件 把代碼重構爲可以上傳任意數量的字段和任意數量的附件的工具類
第30個主題:Android中Java與WebView中Javascript相互溝通 30.1,製做Android界面的新大陸 30.2,Java調用Javascript 30.3,Javascript調用Java
第31個主題:瀏覽器開發和自定義 31.1 瀏覽器定製和開發的核心原理剖析 31.2 瀏覽器定製和開發的技術手段剖析 31.3 瀏覽器定製和開發實戰
第32個主題:HTML5時代:Device、Browser、Cloud 32.1 HTML5時代誰最重要? 32.2 HTML5與Device 32.3 HTML5與Cloud 32.4 什麼主導了HTML5時代?
第33個主題:HTML5開發平臺----PhoneGap框架的技術基石是什麼? 33,1 使用WebView 33,2 在WebView中使用JavaScript 33.3 建立本地Java API 33.4 使用JavaScriptInterface 33.5 JavaScript調用Java 33.6 Java調用JavaScript 33.7 PhoneGap是如何使用JavaScriptInterface的
第34個主題:PhoneGap的Plugin開發 34.1如何擴展PhoneGap的功能? 34.2 IPlugin接口 34.3 Proxy-Stub模式在Plugin開發中的應用及價值 34.4 Plugin開發中如何控制硬件廠商和Web開發者 34.5 Plugin核心代碼剖析及開發實戰 |