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

一、课程特色

l  建立360度的Android产品研发能力和解决问题的能力,能够独立开发并深度定制出搭载Android系统的产品;

l  贯通Android软硬整合和HTML5端云整合技术整个体系;


全程案例驱动,重在剖析案例代码背后的设计思维和商业密码;


彻底掌握Android HAL的背后的密码;


彻底掌握Android HAL的实现机制和技术


彻底掌握Android Framwork的背后的密码


彻底掌握Android Framwork的设计思维和理念


揭秘Android系统的运行的基石Binder


以Camera实例来彻底剖析Native Service和Binder


彻底实战编写Andorid应用程序的一切技术


掌握HTML5技术的源泉和精髓

二、培训对象

l  手机、平板、智能电视、车载系统、智能家居设备(例如微波炉、防盗门、电冰箱)等所有想使用Android的硬件厂商;

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人才;授课是以案例驱动为基础重在讲解代码背后的设计思维和商业密码;

王家林老师

中国目前唯一的移动互联网和云计算大数据集大成者;

云计算大数据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、HTML5、Hadoop,迷恋英语播音和健美;

致力于Android、HTML5、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个主题: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堂课:ActivityManagerService原理与核心架构解析

22.1 AMS的架构解析和main剖析

22.2 AMS启动一个Process架构解析源码剖析

22.3 AMS启动Activity、Service、Broadcast、ContentProvider架构解析与源码剖析

22.4 Proxy-Stub

第23堂课:WindowManagerService原理与核心架构解析

23.1 WindowManagerService架构解析

23.2 Window创建过程分析

23.3 Activity与WindowManagerService交互

23.4 WindowManagerService下的SurfaceFlinger

23.5 窗口的绘制和改变全程代码解析

第24个主题:Dalvik虚拟机架构设计和实现彻底剖析

24.1 Dalvik虚拟机启动过程剖析

24.2 Dalvik虚拟机运行过程剖析

24.3 Dalvik的C/C++与Java交互的JNI方法注册过程剖析

24.4 Dalvik关于进程和线程创建与管理剖析

第25个主题:源码:通过Binder、ServiceManager、BpBinder、BnBinder、AIDL贯通Android整个体系的架构核心(120分钟)

25.1. 源码剖析Service Manager是如何成为一个守护进程的?

25.2. 源码剖析Server和Client是如何获得Service Manager接口的?

25.3. 源码剖析Server是如何把自己的服务启动起来的?Service Manager在Server启动的过程中是如何为Server提供服务的?

25.25  源码剖析Service Manager是如何为Client提供服务的?

25.5. Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析

Android架构设计和软硬整合完整训练的更多相关文章

  1. 字节跳动前技术总监开源分享《Android架构设计权威指南》,YYDS!

    架构就像是一场进化史,根据不同时期的需求,演变出不同的架构,车轮滚滚,到今天,移动端框架百花齐放,让人目不暇接.但是其中的本质是磨灭不了的,换言之根本没有磨灭而是隐藏到了人们所看不到的地方,但是依旧发 ...

  2. Android架构设计之插件化、组件化

    如今移动app市场已经是百花齐放,其中有不乏有很多大型公司.巨型公司都是通过app创业发展起来的:app类型更加丰富,有电子商务.有视频.有社交.有工具等等,基本上涵盖了各行各业每个角落,为了更加具有 ...

  3. Android架构设计之MVP分析

    转载请注明出处:http://blog.csdn.net/crazy1235/article/details/51471280

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

    掌握Android从底层开发到框架整合技术到上层App开发及HTML5的全部技术: 一次彻底的Android架构.思想和实战技术的洗礼: 彻底掌握Andorid HAL.Android Runtime ...

  5. 高焕堂《android从程序员到架构师之路》 YY讲坛直面大师学习架构设计

    <android从程序员到架构师之路>YY讲坛活动:  sundy携手高焕堂老师全程YY答疑 与大师一起,分享android技术 时间:7月21日下午2:00   报名联系QQ:22243 ...

  6. 整合微信小程序的Web API接口层的架构设计

    在我前面有很多篇随笔介绍了Web API 接口层的架构设计,以及对微信公众号.企业号.小程序等模块的分类划分.例如在<C#开发微信门户及应用(43)--微信各个项目模块的定义和相互关系>介 ...

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

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

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

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

  9. 升讯威微信营销系统开发实践:(1)功能概要与架构设计( 完整开源于 Github)

    GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试至 ...

随机推荐

  1. skip32

    在某些应用场景下,需要对数字进行加密,skip32无疑是一种很实用的算法,网上有python的源码(https://bitbucket.org/anuraguniyal/skip32.py/src/4 ...

  2. HDU 1425 sort 题解

    选择出数列中前k个最大的数. 这里由于数据特殊.所以能够使用hash表的方法: #include <cstdio> #include <algorithm> #include ...

  3. ASP.NET - 使用 XML

    对XML文件进行简单的增加,删除,修改,查看等功能. XML代码: <?xml version="1.0" encoding="UTF-8"?> & ...

  4. 讲解下for循环的用法,加深记忆

    引子 这是一段很简单的代码,但是即便是这么简单的东西,这里我们还是需要说一下. 关于for循环整个执行流程就是,先执行var i=10,然后到了第二个语句,判断10是否大于0,很明显为true,所以此 ...

  5. PHPCMS V9数据库配置文件database.php位置

    初次用PHPCMS V9的朋友可能找不到数据库配置文件,其实在官方的wiki中已经介绍了.那就是 caches\configs\database.php 文件. 初次用PHPCMS V9的朋友可能找不 ...

  6. AngelHack China 2013 招组队成员

    AngelHack China 2013 connect me

  7. Appium Server 传递Android参数

    Appium  server Capabilities 传递参数    Android 特定 Android Only Capability Description Values appActivit ...

  8. 慎用MonthsBetweent和MonthSpan

    ●function MonthsBetween(const ANow, AThen: TDateTime): Integer; 描述: 根据两个给定的TDateTime类型的参数ANow和AThen, ...

  9. poj 3211 Washing Clothes(背包)

    很不错的01背包!!! 不过有点疑问!!!(注释) #include <algorithm> #include<stdio.h> #include<string.h> ...

  10. Android高手进阶——Adapter深入理解与优化

    Android高手进阶--Adapter深入理解与优化 通常是针对包括多个元素的View,如ListView,GridView.ExpandableListview,的时候我们是给其设置一个Adapt ...