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

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

  1. 王家林的“云计算分布式大数据Hadoop实战高手之路---从零开始”的第十一讲Hadoop图文训练课程:MapReduce的原理机制和流程图剖析

    这一讲我们主要剖析MapReduce的原理机制和流程. “云计算分布式大数据Hadoop实战高手之路”之完整发布目录 云计算分布式大数据实战技术Hadoop交流群:312494188,每天都会在群中发 ...

  2. 一站式Hadoop&Spark云计算分布式大数据和Android&HTML5移动互联网解决方案课程(Hadoop、Spark、Android、HTML5)V2的第一门课程

    Hadoop是云计算的事实标准软件框架,是云计算理念.机制和商业化的具体实现,是整个云计算技术学习中公认的核心和最具有价值内容. 如何从企业级开发实战的角度开始,在实际企业级动手操作中深入浅出并循序渐 ...

  3. 云计算分布式大数据Hadoop实战高手之路第七讲Hadoop图文训练课程:通过HDFS的心跳来测试replication具体的工作机制和流程

    这一讲主要深入使用HDFS命令行工具操作Hadoop分布式集群,主要是通过实验的配置hdfs-site.xml文件的心跳来测试replication具体的工作和流程. 通过HDFS的心跳来测试repl ...

  4. 云计算分布式大数据Hadoop实战高手之路第八讲Hadoop图文训练课程:Hadoop文件系统的操作实战

    本讲通过实验的方式讲解Hadoop文件系统的操作. “云计算分布式大数据Hadoop实战高手之路”之完整发布目录 云计算分布式大数据实战技术Hadoop交流群:312494188,每天都会在群中发布云 ...

  5. 云计算分布式大数据神器Spark实战高手之旅

    从2012年1月份研究Spark到如今已经两年多的时间了. 在这两年多的时间里比較彻底的研究了Spark的源码并已经在2014年4月24日编写完毕了世界上第一本Spark书籍. 鉴于CSDN在大陆IT ...

  6. [转]Android App整体架构设计的思考

    1. 架构设计的目的 对程序进行架构设计的原因,归根到底是为了提高生产力.通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合.这样做的好处是使得程序在开发的过程中,开发人员只需要专注于一点, ...

  7. Top100Summit全球案例研究峰会第一天总结——云计算和大数据

    很荣幸受邀参加Top100Summit全球软件案例研究峰会,这次的大会主题是<技术推动商业变革>,组委会从全国投稿的460多件案例中甄选出100件具有代表价值的案例,进行为期4天的分享,第 ...

  8. Android App的架构设计:从VM、MVC、MVP到MVVM

    随着Android应用开发规模的扩大,客户端业务逻辑也越来越复杂,已然不是简单的数据展示了.如同后端开发遇到瓶颈时采用的组件拆分思想,客户端也需要进行架构设计,拆分视图和数据,解除模块之间的耦合,提高 ...

  9. 分布式大数据高并发的web开发框架

    一.引言 通常我们认为静态网页html的网站速度是最快的,但是自从有了动态网页之后,很多交互数据都从数据库查询而来,数据也是经常变化的,除了一些新闻资讯类的网站,使用html静态化来提高访问速度是不太 ...

随机推荐

  1. LZW压缩算法——简明原理与实现

    LZW和哈夫曼编码一样,是无损压缩中的一种.该算法通过建立字典,实现字符重用与编码,适用于source中重复率很高的文本压缩.本文首先讲下LZW的编解码原理,然后给出LZW的实现code. ***** ...

  2. [转]一种简单的js时间控件

    使用方法: 粘贴代码到文本文档中,文档名称为datetime.js,然后在html文件中引用如下代码即可 <input name="shijian1" id="sh ...

  3. 关于TortoiseGit使用的心得

    花了我一个晚上,终于弄明白为什么总是 push 失败的原因了!竟然是因为我用的是注册的用户名而不是邮箱名……囧死. 另外搞清楚了一个问题,就是 Git 和远程仓库交互有两种方式,即 https 方式和 ...

  4. PHP 7 vs HHVM 比较

    PHP 是最流行的用于 web 开发的脚本语言之一.PHP 的最新版本,PHP 7 在性能上做了很大的优化.不过,PHP 还有一个竞争对手 HHVM (HipHop Virtual Machine) ...

  5. Inno setup中定制安装路径

    我的程序修改了安装界面,所以我的界面中提供了更改安装路径的方法. 用户修改后的路径会被传回inno setup脚本,脚本中需要做的事情如下: 1,写一个函数,来返回新的安装路径,如: function ...

  6. c#匿名类,匿名对象

    何谓匿名类,其实本质和普通定义的类一样,只不过是由系统的编译器来完成的,首先举个例子. 一般情况 //声明一个类,包含贴别多的字段 public class Person() { public str ...

  7. 中等难度SQL语句(存储过程,分页,拼接字段、游标,日期类型转换,动态行转列,视图)汇总

    一.创建存储过程 if Exists(select name from sysobjects where NAME = 'sp1LoginUser' and type='P')drop procedu ...

  8. [题解+总结]NOI2015

    // 此博文为迁移而来,写于2015年7月20日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102w6u7.html 1.总 ...

  9. [LeetCode]题解(python):125 Valid Palindrome

    题目来源 https://leetcode.com/problems/valid-palindrome/ Given a string, determine if it is a palindrome ...

  10. [OrangePi] Installation on SD Card

    Download any of the available images (xz archive) from Mega or GoogleDrive Download scriptbin_kernel ...