Android讲师

---讲师:

王家林 :

Hadoop源码级专家,曾负责某知名公司的类Hadoop框架开发工作,专注于Hadoop一站式解决方案的提供,同时也是云计算分布式大数据处理的最早实践者之一,Hadoop的狂热爱好者,不断的在实践中用Hadoop解决不同领域的大数据的高效处理和存储,现在正负责Hadoop在搜索引擎中的研发中国电信的多次Hadoop培训,花旗银行的Hadoop内训,金立手机的Hadoop内训等,著有《云计算分布式大数据Hadoop实战高手之路---从零开始》《云计算分布式大数据Hadoop实战高手之路---高手崛起》《云计算分布式大数据Hadoop。实战高手之路---高手之巅》等;

Android架构师、高级工程师、咨询顾问、培训专家;

通晓Android、HTML5、Hadoop,迷恋英语播音和健美;

致力于Android、HTML5、Hadoop的软、硬、云整合的一站式解决方案;

国内最早(2007年)从事于Android系统移植、软硬整合、框架修改、应用程序软件开发以及Android系统测试和应用软件测试的技术专家和技术创业人员之一。

HTML5技术领域的最早实践者(2009年)之一,成功为多个机构实现多款自定义HTML5浏览器,参与某知名的HTML5浏览器研发;

超过10本的IT畅销书作者;

掌握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核心代码剖析及开发实战

Android讲师

时间: 2024-10-10 18:30:53

Android讲师的相关文章

“大数据讲师”、“Hadoop讲师”、“Spark讲师”、“云计算讲师”、“Android讲师”

王家林简介 Spark亚太研究院院长和首席专家,中国目前唯一的移动互联网和云计算大数据集大成者. 在Spark.Hadoop.Android等方面有丰富的源码.实务和性能优化经验.彻底研究了Spark从0.5.0到0.9.1共13个版本的Spark源码,并已完成2014年5月31日发布的Spark1.0源码研究. Hadoop源码级专家,曾负责某知名公司的类Hadoop框架开发工作,专注于Hadoop一站式解决方案的提供,同时也是云计算分布式大数据处理的最早实践者之一: Android架构师.高

Google 收购 Android 十周年 全面解读Android现状

--訪传智播客Android学科教学总监传智·平一指 Android以前是一家创立于旧金山的公司的名字,该公司于2005年8月份被Google收购,并从此踏上了飞速发展的道路.经过十年的发展,它已经发展成了一个平台.一个生态体系. 近几年,Android的应用开发进入了一个爆炸式增长的状态,如今移动开发市场上平台林立,各自圈地为营.Android手机平台也异军突起,直接挑战了苹果在手机以及平板系统的霸主地位.可是,对于Android当前的现状和未来的发展前景,非常多人总会有或多或少的疑问,今天有

android开发心得之知识的量变到质变

随着身边越来越多的人开始了尝试android开发,看着他们一点点学期 从nodepad++写代码 cmd 执行,到安装eclipse 和android SDK,仿佛看到了昨天的我一样,一样勤勤恳恳的学着. 刚开始接触安卓时,觉得:哇,自己写app好强啊,可能那就是我想做的.然后就开始从网上看视频,图书馆借书,学java语言,学android机制,逐步着手开发.纸上得来终觉浅,绝知此事要躬行.看的再多不如自己能写,每一位android讲师都会说这样的话,说明了自己动手的重要性.这里我想给打算学习或

小吴的外包之殇

今年的8月相对于往年没有什么变化,天还是适合八分熟的牛排,雨水还是那么稀里哗啦一阵阵与滚滚热浪翻天覆地的争夺着地盘.可对于小吴,没那么简单.今年的8月是小吴职业生涯中又一个分水岭,却增添了更多的不确定和波折.而这些莫须有的挫折本应该不存在的,可现在还是有了.每天的失眠给了小吴充分的时间来思考,可这不是Bug,也不是需求,是人性.他不想浑浑噩噩把这种状态带到工作当中去,可现在,还是要去面对,去面对注定的失去,从认知上,从经济上,从工作上. 他应该很幸运自己没有在任何一家外包公司任职,可不幸的是,他

诚邀各路IT精英加盟小码哥共创大业

2015年5月,李明杰MJ创办了小码哥,立志要打造一个卓越的IT培训品牌,给广大的IT学子提供高质量高水平的IT技术教育培训及服务.为了让这一目标能得以实现,小码哥诚邀IT届有事业心,有能力,有拼劲,有干劲各路英豪加盟一起创业. 在发具体职位之前,先简单向大家介绍一下小码哥教育的待遇体系.在小码哥,我们实行的是全员持股制度,这里没有职位的高低,只有分工的不同,每一名员工都是公司的股东,不管你是教学总监还是一名普通教师,不管你是校长还是一名普通员工,都可以参与年终的分红,都可以伴随公司的成长实现个

包建强的培训课程(2):Android与设计模式

@import url(/css/cuteeditor.css); v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} Normal 0 false 10 pt 0 2 false false false EN-US ZH-CN X-NONE $([{£¥·‘“〈<「

优秀的 Android 开源项目

摘要  转载http://www.trinea.cn/android/android-open-source-projects-view/,方便大家找到自己合适的资料 目录[-] 一.ListView 二.ActionBar 三.Menu 四.ViewPager .Gallery 五.GridView 六.ImageView 七.ProgressBar 八.其他 GitHub上优秀Android开源项目 3. Android开发神器 1.Xabber客户端 2.oschina客户端 3.手机安全

完美解决Android使用Zxing扫描二维码改成竖屏后,后面的预览画面出现了拉伸,扭曲的情况

完美解决解决Android使用Zxing扫描二维码改成竖屏后,后面的预览画面出现了拉伸,扭曲的情况 第一步:找到com.zxing.camera包下的CameraConfigurationManager.java文件中的void initFromCameraParameters(Camera camera)方法 第二步:在 Log.d(TAG, "Screen resolution: " + screenResolution);后加上如下的代码 Point screenResoluti

[Android Studio 权威教程]离线配置SDK,创建第一个AS项目

前三篇bolg我给大家分享了怎么安装Android Studio,但是我们还没有使用AS创建一个Android 的项目,那么这篇blog我们开始离线配置SDK,并且创建一个Android项目 没有看如何安装Android Studio的童鞋,请先看这里,然后回来我们继续: [Android Studio 权威教程]Mac下安装Android Studio [Android Studio 权威教程]Linux下安装Android Studio [Android Studio 权威教程]Window