希望从事移动终端开发的爱好者、工程师、程序员、以及相关行业的工程技术人员
| 课程编号 | 开课日期 | 地点 | 培训天数 | 选择报名 |
希望从事移动终端开发的爱好者、工程师、程序员、以及相关行业的工程技术人员
时间地点:2013年4月19-21日深圳
课程费用:5800 元/人
课程对象:希望从事移动终端开发的爱好者、工程师、程序员、以及相关行业的工程技术人员
课程简介:
在软硬整合领域, Android以其对软件和硬件的高度开放性引领了当今的软硬整合潮流,全世界正在进行一场轰轰烈烈的Android运动,Android以不可思议的速度渗透越来越广的领域,Android智能手机、Android智能电视、Android微波炉、Android平板电脑、Android智能机器人、Android车载系统等越来越多的Android产品涌入人们的工作和生活中,自从Google的Android@Home战略发布以来,更是让世界对Android充满了怦然心动的期待,可以预测,未来的家庭智能化和物联网时代将是Android的天下!
谁,将成为软硬整合时代的新主人?
谁,将彻底掌握Android从底层开发到框架整合技术在到上层App开发的全部技术?
谁,将彻底洞悉HTML5的技术源泉和精髓,进而在HTML5游刃有余?
恭喜你,当别人还在雾里看花,你却有机会彻底掌握Android软、硬、云整合技术。
这是一次彻底的Android架构、思想和实战技术的洗礼。
彻底掌握Andorid HAL、Android Runtime、Android Framework、Android Native Service、Android Binder、Android App、HTML5技术的源泉和精髓等核心技术,不仅仅是技术和代码本身,更重要的是背后的设计思想和商业哲学。
课程特色:
贯通Android软硬整合和HTML5端云整合技术整个体系;
全程案例驱动,重在剖析案例代码背后的设计思维和商业密码;
彻底掌握Android HAL的背后的密码;
彻底掌握Android HAL的实现机制和技术
彻底掌握Android Framwork的背后的密码
彻底掌握Android Framwork的设计思维和理念
揭秘Android系统的运行的基石Binder
以Camera实例来彻底剖析Native Service和Binder
彻底实战编写Andorid应用程序的一切技术
掌握HTML5技术的源泉和精髓
培训目标:
致力于打造在软硬云整合时代具有独立思考能力和实践能力的高素质IT人才;
Android高级工程师
Android移植工程师
Android框架开发工程师
Android项目经理
Android架构师
HTML5系统架构和开发人员
学员基础:
具有Java基础;
具有C和C++基础更佳;
对设计模式有所有了解对提升听课效果会大有裨益;
培训方式:
本课程共计3天,内容涵盖Android底层、Android HAL、Android Runtime、Android Framework、Android Native Service、Android Binder、Android App开发、Android的Web开发等软硬云整合的的几乎所有核心技术并揭秘HTML5技术的源泉和精髓,致力于打造在软硬云整合时代具有独立思考能力和实践能力的高素质IT人才;授课是以案例驱动为基础重在讲解代码背后的设计思维和商业密码。
课程大纲:
day1
第1个主题:Android中启动一个新的应用程序揭秘
1.1 当我们触摸Android屏幕中Launcher上的一个应用程序的图标的时候到底发生怎样的调用过程?
1.2 应用程序的执行入口到底在哪里?
1.3 一个新的Android应用程序的进程到底是怎么产生的?
第2个主题:Android开机流程揭秘
2.1 第一个用户进程剖析;
2.2 ServiceManager与Binder的关系;
2.3 Zygote揭秘及其运作方式;
2.4 Android中的第一个Java进程揭秘,第一个Java进程和ServiceManager的关系及代码实现;
第3个主题:细致剖析Init进程
3.1 Init进程运行过程是什么?
3.2 init.rc剖析:Action List、Service List等
3.3进程的启动与终止
第4个主题:HAL Stub实战
4.1 用面向对象的思想分析、设计、实现Stub
4.2 hw_module_t的子类和hw_device_t的子类的关系以及这种关系的优势
4.3在结构体中如何实现C函数的调用?hw_module_t的子类在代码中又是如何和hw_device_t的子类交互的?
4.4 类型转换问题
第5个主题:Service与HAL Stub整合
5.1 以面向服务的观点和方式与HAL交互
5.2 Library的中so库文件的类型及C/S结构剖析
5.3 hw_get_module
5.4 获取HAL Stub对象的代码流程剖析
5.5 为何HAL Stub的open方法必须提供supporting API(对设备的操作接口)给runtime;
第6个主题:细致剖析Binder
6.1 Binder IPC数据传递和数据流
6.2 RPC代码与RPC数据
6.3 Binder Driver分析
6.4 ContextManager
第7个主题:Service、ServiceManager和Binder交互关系揭秘
7.1 Binder的第一号服务是谁?为何要这样设计和实现?
7.2 如何编写Service
7.3 新的Service产生与ServiceManager和Binder交互流程
7.4 如何获取一个Service?
7.5 Binder的生产者与消费者模式剖析
第8个主题:Binder与Shared Memory
8.1 Binder源代码剖析
8.2 Shared Memory剖析
8.3 Binder是如何使用共享内存来完成进程间通信的?
8.4 从代码的角度来分析Binder使用Shared Memory的生产者与消费者模式
第9个主题:Dalvik VM
9.1 Dalvik VM的特点,Dalvik VM和JVM的比较
9.2 Dalvik VM的内存分布及OOM(Out of Memory)的根本原因和解决方案是什么?
9.3 Preload Classes和 Preload Resources,ClassLoader到底在哪里?
9.4 Dalvik与Java和C/C++
Day2
第10个主题:Android中的JNI编程
10.1 Java调用C/C++
10.2 JNIEnv、JVM、JObject揭秘
10.3 C/C++创建Java对象、调用Java属性和方法
10.4 JNI中的多线程编程
10.5 Facade Pattern在JNI中绝妙应用剖析
10.6 PnP(Plug and Play)
第11个主题:Android中的NDK编程
11.1 NDK与JNI关系揭秘
11.2 NDK开发的流程
11.3 采用NDK方式开发出的程序安装和运行的内幕
11.4 NDK中的Java与C/C++相互调用
11.5 NDK中的多线程编程
11.6 关于Android软件开发的标准化和可替换性揭秘
第12个主题:SystemServer与Framework中的Service
12.1 Zygote与SystemServer
12.2 SystemServer开启Java世界的过程揭秘
12.3 Android Service和Native Service是如何关联起来的?
12.4 Android Service与ServiceManager
12.5 如何把自己的服务加入到ServiceManager中?
12.6以PowerManagerService为例分析其工作机制
12.7 WallpaperService底层机制分析
第13个主题:把Java写的 Service加入到Applciation Framework中
13.1 IInterface与CTS
13.2 Binder
13.3 AIDL
13.4 Java Service与Manager
13.5 SystemServer、ServiceManager
第14个主题:Android框架移植移植时的事件驱动机制
14.1 Android Service是如何应对硬件阻塞的?
14.2 开辟新的子线程并不断的poll
14.3 Listener注册
14.4 Callback
14.5 Application Framework中的Handler、Message、Looper、MessageQueue
14.6 事件驱动机制实例
第15个主题:Manager、Service和完整的数据流
15.1,Manager和Service分离的原则
15.2,ANR问题
15.3,阻塞式的操作和非阻塞式操作
15.4,以实例说明Android中的从最底层到最上层的数据流
第16个主题:Android Application Framwork和App的关系
16.1 Framework和App的具体关系是什么?
16.2 Framework和App的交互过程?
16.3 Framework如何掌控App的?
16.4 Framework与Android的四大组件
第17个主题: Handler、Looper、Message、MessageQueue
17.1 Android的事件驱动模型
17.2 Looper、MessageQueue、Hanlder、Message等源码深度剖析
17.3 Looper、MessageQueue、Hanlder、Message及多线程实战案例
第18主题: AsyncTASK异步线程技术
18.1. 使用AsyncTask的原因及对AsyncTask的思考
18.2. AsyncTask代码示例
18.3. AsyncTask源码剖析
Day3
第19主题:浏览器开发和自定义
19.1 浏览器定制和开发的核心原理剖析
19.2 浏览器定制和开发的技术手段剖析
19.3 浏览器定制和开发实战
第20个主题:HTML5 架构思维
20.1 All in JavaScript
20.2 Architect of Device & Cloud
20.3 Open Platform & API
第21主题:Android中Java与WebView中Javascript相互沟通
21.1 制作Android界面的新大陆
21.2 Java调用Javascript
21.3 Javascript调用Java
第22个主题:通过一个Blog实例实战HTML5&CSS3
22.1 实战HTML5新增页面元素;
22.2 实战HTML5中的表单;
22.3 实战HTML5中的Canvas
22.4 实战html 5页面中视频和音频
22.5 CSS3技术实战
第23个主题:HTML5的新特性
23.1 本地存储
23.2 离线应用
23.3 多线程技术
23.4 地理位置信息
23.5 其它新特性
第24个主题:PhoneGap的技术思考
24.1 PhoneGap的架构艺术
24.2 PhoneGap与HTML5、CSS3、JavaScript的关系
24.3 PhoneGap与智能手机的核心功能——包括相机、文件访问、地理定位,加速器,联系人,声音和振动等
24.4 PhoneGap的优势和劣势
第25个主题:PhoneGap框架的技术基石是什么?
25.1 使用WebView
25.2 在WebView中使用JavaScript
25.3 创建本地Java API
25.4 使用JavaScriptInterface
25.5 JavaScript调用Java
25.6 Java调用JavaScript
25.7 PhoneGap是如何使用JavaScriptInterface的
第26个主题:PhoneGap案例开发实战
26.1 PhoneGap的生命周期事件
26.2 通过Connection测试网络链接
26.3 通过Accelerometer来采集设备的动作
26.4 通过Compass获得当前设备的方向
26.5 PhoneGap 操作本地系统的Camera
26.6 PhoneGap其它的本地API;
第27个主题:彻底洞悉jQuery Mobile
27.1 jQuery Mobile设计的技术思考和商业思考
27.2 jQuery Mobile入门初体验;
27.3 使用页眉、工具栏和标签栏;
27.4 jQuery Mobile中的表单和按钮;
27.5 jQuery Mobile中的列表;
27.6 jQuery Mobile和CSS结合;
27.7 jQuery Mobile主题;
27.8 jQuery Mobile的API;
27.9 jQuery Mobile和HTML5开发框架PhoneGap结合;
第28个主题:Node.js实战高并发和非阻塞式的服务端
28.1 Node.js的思考;
28.2 Node.js开发环境安装;
28.3 Node.js开发实战
第29个主题:Node.js和WebSocket的整合
29.1 使用Node.js和WebSocket打造非同步处理机制及其重大价值;
29.2使用Node.js和WebSocket打造非同步处理机制案例实战