王家林的81门一站式云计算分布式大数据&移动互联网解决方案课程第14门课程:Android软硬整合设计与框架揭秘: HAL&Framework &Native Service &App&HTML5架构设计与实战开发

掌握Android从底层开发到框架整合技术到上层App开发及HTML5的全部技术;

一次彻底的Android架构、思想和实战技术的洗礼;

彻底掌握Andorid HAL、Android Runtime、Android Framework、Android Native Service、Android Binder、Android App、Android Testing、HTML5技术的源泉和精髓等核心技术,不仅仅是技术和代码本身,更重要的是背后的设计思想和商业哲学。

 

一、课程特色

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技术的源泉和精髓

二、培训对象

l  对Android软硬整合感兴趣的人员;

l  希望迅速了解和掌握Android应用和底层技术的人员;

l  Android底层开发者;

l  Android框架设计和开发者;

l  Android产品架构师;

l  Android系统架构师;

l  Android应用程序开发者;

l  欲从事HTML5系统工作的人员(浏览器的开发、PhoneGap的的Plugin开发等)

l  希望从事移动终端开发的爱好者、工程师、程序员、以及相关行业的工程技术人员

三、 培训目标

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、HTML5、Hadoop,迷恋英语播音和健美;

致力于Android、HTML5、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核心代码剖析及开发实战

 

 

 

posted @ 2014-02-14 20:28  王家林的Hadoop之旅  Views(546)  Comments(0Edit  收藏  举报