主题 |
内容 |
第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个主题:Binder与Shared Memory
|
8.1 Binder源代码剖析
8.2 Shared Memory剖析
8.3 Binder是如何使用共享内存来完成进程间通信的?
8.4 从代码的角度来分析Binder使用Shared Memory的生产者与消费者模式
|
第9主题: Handler、Looper、Message、MessageQueue
|
9.1 Android的事件驱动模型
9.2 Looper、MessageQueue、Hanlder、Message等源码深度剖析
9.3 Looper、MessageQueue、Hanlder、Message及多线程实战案例
|
第10个主题:把Java写的 Service加入到Applciation Framework中
|
10.1 IInterface与CTS
10.2 Binder
10.3 AIDL
10.4 Java Service与Manager
10.5 SystemServer、ServiceManager
|
第11主题:Android软、硬、云三位一体整合
|
11.1 从技术角度揭秘云,包括云的关键技术和实现方法
11.2 在Application Framework中整合Android与云
11.3 Android软、硬、云三位一体整合,包括模式、策略、实现技术
|
第12主题:Android测试
|
12.1 Android代码测试的好处,测试的方式
12.2 .JUnit框架解析
12.3 测试用例的生命周期
12.4 自动化测试
12.5 源码剖析
|
第13主题:断点续传
|
★ 类似迅雷的多线程下载器
13.1 多线程下载断点续传原理和流程图
13.2 下载文件时Http协议协议详解
13.3 多线程下载断点续传程序:设计服务端和Android端
13.4 Android端的内容涉及IoC、多线程、SQLite数据库、Handler、Http协议、缓存处理、意外关机时候的处理、编写框架、MVC、Service、Android中的I/O流、代码调试、Activity的生命周期等
13.5 单元测试
13.6 软件调试
★ 多线程断点文件上传器
13.7 断点续传原理和流程图
13.8 上传文件的Http协议详解
13.9 自定义自己的文件传输协议
13.10 服务端程序的编写:文件的下载与实时数据的记录、监听模式、乱码问题的处理、并发问题、黑客安全问题
13.11 客户端程序的编写:Android内存溢出问题,Android中的Socket编程、大文件的传输、大文件传输时候的安全问题
13.12 单元测试
13.13 软件调试
|
第14主题:浏览器开发和自定义
|
14.1 浏览器定制和开发的核心原理剖析
14.2 浏览器定制和开发的技术手段剖析
14.3 浏览器定制和开发实战
|
第15个主题:HTML5 架构思维
|
15.1 All in JavaScript
15.2 Architect of Device & Cloud
15.3 Open Platform & API
|
第16主题:Android中Java与WebView中Javascript相互沟通
|
16.1 制作Android界面的新大陆
16.2 Java调用Javascript
16.3 Javascript调用Java
|
第17个主题:通过一个Blog实例实战HTML5&CSS3
|
17.1 实战HTML5新增页面元素;
17.2 实战HTML5中的表单;
17.3 实战HTML5中的Canvas
17.4 实战html 5页面中视频和音频
17.5 CSS3技术实战
|
第18个主题:HTML5的新特性
|
18.1 本地存储
18.2 离线应用
18.3 多线程技术
18.4 地理位置信息
18.5 其它新特性
|
第19个主题:PhoneGap的技术思考
|
19.1 PhoneGap的架构艺术
19.2 PhoneGap与HTML5、CSS3、JavaScript的关系
19.3 PhoneGap与智能手机的核心功能——包括相机、文件访问、地理定位,加速器,联系人,声音和振动等
19.4 PhoneGap的优势和劣势
|
第20个主题:PhoneGap框架的技术基石是什么?
|
20.1 使用WebView
20.2 在WebView中使用JavaScript
20.3 创建本地Java API
20.4 使用JavaScriptInterface
20.5 JavaScript调用Java
20.6 Java调用JavaScript
20.7 PhoneGap是如何使用JavaScriptInterface的
|
第21个主题:PhoneGap案例开发实战
|
21.1 PhoneGap的生命周期事件
21.2 通过Connection测试网络链接
21.3 通过Accelerometer来采集设备的动作
21.4 通过Compass获得当前设备的方向
21.5 PhoneGap 操作本地系统的Camera
21.6 PhoneGap其它的本地API;
|
第22个主题:彻底洞悉jQuery Mobile
|
22.1 jQuery Mobile设计的技术思考和商业思考
22.2 jQuery Mobile入门初体验;
22.3 使用页眉、工具栏和标签栏;
22.4 jQuery Mobile中的表单和按钮;
22.5 jQuery Mobile中的列表;
22.6 jQuery Mobile和CSS结合;
22.7 jQuery Mobile主题;
22.8 jQuery Mobile的API;
22.9 jQuery Mobile和HTML5开发框架PhoneGap结合;
|
第23个主题:Node.js实战高并发和非阻塞式的服务端
|
23.1 Node.js的思考;
23.2 Node.js开发环境安装;
23.3 Node.js开发实战
|
第24个主题:Node.js和WebSocket的整合
|
24.1 使用Node.js和WebSocket打造非同步处理机制及其重大价值;
24.2使用Node.js和WebSocket打造非同步处理机制案例实战
|
第25个主题:Android产业观点及获利模式
|
25.1 Android开源、开放与相容的意义和途径
25.2 Android手机、平板和电视产品的技术趋势与市场策略
|
第26个主题:解析Android框架的设计模式(Design Pattern)
|
26.1 设计模式的使用要点
26.2 常见的设计模式应用情境
26.3 解析UI框架的设计模式,包括事件处理、ListView和SurfaceFlinger框架里的重要机制
26.4 扩充Java层应用框架,优化UI设计
26.5 跨进程(IPC)通信的设计模式
26.6 内容储存的设计模式
26.7 系统服务的设计模式
26.8 HAL-based驱动的设计模式
|
第27个主题:使用NDK/JNI:Java与C/C++的整合开发
|
27.1 使用Android的NDK环境
27.2 从Java呼叫JNI的C/C++函数
27.3 从C/C++呼叫Java的函数
27.4 擅用JNI来提升App效能:以OpenGL的3D绘图为例
|
第28个主题:上层(Java)应用框架的解析观摩与扩充
|
28.1 UI框架解析与扩充
订制Widget控件:扩充View类别体系
定义系统全局控件的风格
改变菜单栏的风格和定制菜单
28.2 MediaPlayer框架的解析与扩充
Java层框架基类及相关类别
JNI接口
系统服务
基类(Superclass)的扩充
28.3 SurfaceView框架的解析与扩充
一般View与SurfaceView的区别
SurfaceView的线程模式
扩充SurfaceView的JNI接口,以底层OpenGL引擎绘图
28.4 SurfaceFlinger框架的解析与扩充
SurfaceView如何透过JNI呼叫SurfaceFlinger系统服务
SurfaceFlinger如何整合多个SurfaceView的动画
扩充SurfaceFlinger/SurfaceView的接口,以显示支持Camera的贴心Preview功能
|
第29个主题:底层(C/C++)框架的解析、观摩与扩充
|
29.1 系统服務:包括Android Service和 Native Service
29.2 以多媒體Mediaplayer為例介紹C++層系统服務
29.3 系统服務的BBinder基类和IBinder接口
29.4 核心服務框架內的通訊機制:
IPC跨進程(Process)通訊機制
如何綁定(Bind)C++層服務
29.5 框架扩充:亲自开发自己的第一支(C++层)系统服务
|
第30个主题:应用框架开发技术
|
30.1 框架的主要元素:基类(Superclass)
30.2 善用类的继承(Inheritance)机制
30.3 设计基类的抽象函数
30.4 设计模式的应用
30.5 UML建模
30.6 实际编程与测试
|
第31个主题:框架(Open)API设计方法
|
31.1 认识Open API
31.2 以框架基类来实践API
31.3 Open API的威力:掌握主导权
31.4 扩充Android的 Open API
31.5 确保与既有API的兼容性
31.6 API的测试方法
|
第32个主题:如何做行业应用框架的需求分析
|
32.1 需求探索
为什么把轮胎拔掉呢?
为什么火锅店的桌子要挖洞呢?
为什么餐厅要分开<食谱>与<点菜单>呢?
如何设计框架的未来性
目前决策的未来性
具有未来性的框架API设计
Steve Jobs的名言:从未来回顾现在
|
第33个主题:亲自演练行业框架的设计与开发
— 使用高焕堂的EIT模式
|
33.1 熟谙EIT框架设计模式(Pattern)
33.2 遵循自然的造物环境:信息局限性(Information Limitation)
心怀自然造物法则:<单一造型、内涵丰富、无限组合>
活用高焕堂的EIT模式:赋予行业内涵、组合出独特性
扩充EIT衔接本地服务,发挥硬件创新差异化
云端服务和HTTP通信协议
扩充EIT衔接云端服务,发挥云计算能力
|
第34个主题:实践编程(一):先落实到Java层应用框架
复习基本步骤
|
分析:领域分析、框架需求分析
设计:EIT模式设计
编程:使用Java语言
编程要点
将EIT模式的实践为Java基类
将 EIT模式的实践为Java的Interface或抽象基类
提供
|
第35个主题:实践编程(二):往下延伸到C/C++层框架
|
35.1 复习JNI,以及Java与C/C++整合开发技巧
35.2 将EIT模式扩大为EITS新模式
|
第36个主题:实践编程(三):往上衔接到HTML5/JS与PhoneGap的跨平台框架
|
36.1 介绍Web层的EITS模式
|