Android应用程序框架原理与开发实践 |
Android系统结构与分层 |
- Android的分层设计
- Android系统构成原理与特点
- Android需要的Linux内核
- Android式的驱动抽象 -- HAL
- Android的核心 -- Framework
- Android的应用程序层
|
Android应用程序 |
- Android应用程序的四大组成部分及交互
- Intent与Intent filter
- Activity
- Service
- Broadcast Receiver
- Content Provider
|
显示与Layout |
- View、ViewGroup和Layout
- 基本控件
- 复杂控件(ListView,GridView,Gallery)
- Adapter
- 自定义View
- 后台线程的View绘制
|
Android环境里的大型应用程序的设计
-- 在线播放器开发实例
|
- 基于已有的WebService的需求分析
- 功能分析与设计
- 基于用户体验的交互设计
- 可靠性设计 – Android里的无崩溃应用程序设计技巧
- 拓展性设计 – 基于Reflection提高软件的灵活性
- 设计模式在Android里的实践
- 编码上的技巧 – 库方式开发、Activity Affinity、与代码保护
- 代码的可测试环境 – 活用Android环境里的白盒测试与黑盒测试工具
- 质量控制与版本升级
|
Android版本变迁与应付Android碎片化 |
- Android的版本变迁史
- Android应用程序上的“碎片化”问题
- 应对“Android碎片化”的技巧与手段
- 跨平台软件工程 – 如何兼容iOS
- Android 2.3到4.0的应用程序编程上的巨大变动
- 保持应用程序在不同Android版本上的兼容性
|
多线程 |
- UI线程单线程原则
- 分析与解决ANR
- 后台线程
- AsyncTask与IntentService
- Android 3.0之后的多核化编程注意事项
|
RemoteService与设计 |
- Service在软件构架上的重要性
- Local Service与Remote Service
- AIDL,接口与实现
- 基于AIDL的数据传递
- 通过Remote Service构建播放器的实例
|
JNI
|
- JNI的必要性与缺陷
- 使用NDK开发JNI
- JNI编程的两种模式
- 通过JNI,实现Java与Native执行环境的交互
- JNI开发的注意要点
- 通过JNI整合第三方代码
- NativeActivity
|
优化 |
- layout优化
- 代码分析与优化
- 性能采样工具
- Java环境里的优化设计与编码
- Native环境里的优化设计与编码
- 指令级优化
- 硬件级加速 – DSP,硬件加速器及RenderScript
|
Android系统级内核原理、定制、移植与优化 |
Android系统结构与源代码 |
- 回顾Android的系统分层
- Android在不同版本下的源代码构成
- Android源代码工程
- 整合不同的源代码工程
- 编译Android源代码
- Android源代码的静态构成
|
Android系统运行原理 |
- Android系统的启动过程 – 构建 Framework的过程
- 应用程序的启动与被管理
- 系统运行时的“沙盒”模型
- Android的独特多任务模型
- Android框架层提供API实现封装
- Android框架层向下抽象硬件或是软件实现上的差异性
- 应用访问底层库或驱动的三种模型
|
Android 移植 |
- 官方Android源代码与第三方代码
- 各大芯片厂商的源代码
- 移植的Dirty way
- 移植后的产品化
- Linux驱动的快捷化移植
- 修改HAL
- 属性的自定义
- 非手机平台的Android产品化
|
实现硬件适配的HAL |
- Android系统里的常见硬件功能
- 处理硬件差异性
- 广义的HAL和狭义的HAL
- HAL的两种模型
- HAL的实现
- 定义新的HAL
- 基于HAL模型拓展Android硬件支持能力
- HAL与Hot plug
|
HAL的典型范例 -- Sensor HAL |
- Android里的Sensor管理框架
- 在版本变迁过程里的Sensor框架改进
- 2.2之前的Sensor HAL
- 2.3之后的Sensor HAL
- Sensor的Linux驱动
|
Binder |
- Binder简介
- Binder在Android系统里的核心作用
- 基于Binder的Intent
- Remote Service在Android系统里的意义
- 实现Native Service
- 基于Binder的灵活性设计
- 在整合现有资源时使用或不使用Binder的区别
|
交叉编译与整合第三方代码
|
- 嵌入式的交叉编译
- Android的编译系统
- 通过Android.mk快速整合源代码
- Framework与第三方代码整合时的考量
- Framework与第三方代码的三种交互模式
- 设计模式的使用
|
Android的人机交互设计 |
- 人机交互设计的终极目标:简单、高效、高响应
- Android在UI交互设计上的革命性
- 处理输入事件的Linux标准输入层
- Android处理输入事件的不同接口
- Android的显示处理框架
- 硬件加速在Android系统里的重要性
|
系统定制 |
- android系统定制的需求与着眼点
- android的核心组件与交互
- 深层定制软件工程
- 安全性设计
- 功能层二次设计与开发
- API兼容性保持
- 深度定制实例分析
|
调试与优化 |
- Android底层开发里的常见问题
- 简单化的调试优化手段
- Java态的调试技术
- C++环境里的调试技术
- 基于Linux的调试与优化
- 代码执行性能采样
- 如何进行Android的优化
|
Android版本与项目管理 |
- repo
- git与基本版本管理工具
- Gerrit
- 基于git的云开发
- Bug管理
- 基于repo的产品管理
- 开发者的工作流
- 管理者和代码检阅者的工作流
|