第一篇 Android开发准备篇
第1章 构建开发环境及Android程序执行流程 / 2
1.1 构建开发环境 / 2
1.1.1 Android开发需要的工具 / 2
1.1.2 安装所需软件 / 3
1.2 Android程序的执行流程 / 6
1.2.1 Android系统启动过程 / 6
1.2.2 Android应用程序启动过程 / 9
第2章 Android SDK命令行工具 / 11
2.1 SDK命令行 / 11
2.2 shell命令 / 14
2.2.1 文件目录操作指令 / 14
2.2.2 系统管理命令 / 16
2.2.3 备份压缩命令 / 17
2.2.4 查看日志 / 18
2.3 使用Hierarchy Viewer查看层级视图 / 18
2.4 DDMS透视图 / 20
第二篇 Android UI篇
第3章 基础UI / 30
3.1 UI概述 / 30
3.2 布局(Layout) / 32
3.3 菜单(Menu) / 42
3.4 常用UI(Widgets) / 48
3.5 详解UI中的常用布局属性 / 190
第4章 Android高级UI / 193
4.1 抽象布局 / 193
4.1.1 <include>标签 / 193
4.1.2 <merge>标签 / 196
4.1.3 <viewStub>标签 / 198
4.2 Android样式和主题(style与theme) / 198
4.2.1 为Hello Word应用指定样式 / 199
4.2.2 为应用指定主题 / 201
4.3 自定义窗口标题 / 202
4.4 泡泡窗口(PopuWindow) / 205
4.4.1 泡泡窗口概述 / 205
4.4.2 泡泡窗口应用举例 / 206
4.5 ViewFlipper(视图容器) / 210
4.5.1 ViewFlipper常用方法及属性 / 210
4.5.2 使用ViewFlipper实现播放幻灯片效果 / 211
4.6 Fragment框架 / 215
4.6.1 Fragment应用举例 / 216
4.6.2 Fragment的生命周期 / 219
4.7 动画 / 220
4.7.1 动画特效之帧动画 / 220
4.7.2 动画特效之Tween补间动画 / 226
4.8 自定义UI控件 / 235
第三篇 Android NDK揭秘与实战篇
第5章 揭秘NDK / 240
5.1 初识JNI / 240
5.2 NDK开发 / 243
5.2.1 Cygwin、NDK、CDT工具的安装 / 244
5.2.2 NDK开发之HelloWorld1 / 247
5.2.3 NDK开发之HelloWorld2 / 254
5.2.4 在C代码中使用LogCat打印日志信息 / 259
5.2.5 NDK开发中常见的错误 / 261
5.2.6 Java与C语言之间如何传递数据 / 262
5.2.7 企业中JNI开发的流程 / 274
5.2.8 C语言如何调用Java语言 / 275
5.2.9 对中文乱码的处理 / 284
5.2.10 Java语言如何调用C++,C和C++在开发中的区别 / 288
第6章 NDK开发案例 / 295
6.1 锅炉压力值测试案例 / 295
6.1.1 创建应用与逻辑代码的实现 / 296
6.1.2 测试运行 / 301
6.2 Lame编码器的移植案例 / 304
6.2.1 创建应用与逻辑代码的实现 / 306
6.2.2 测试运行 / 333
第四篇 Android安全分析与反编译
第7章 Android安全分析 / 338
7.1 Android系统的安全沙箱与权限模型 / 338
7.2 手机重启的过程分析 / 340
7.3 0权限重启手机 / 345
7.4 谁动了我的日志 / 347
7.5 ROOT权限 / 354
7.6 ROOT后的安全案例一——禁止开机启动项 / 364
7.7 ROOT后的安全隐患案例二——KungFu病毒 / 369
第8章 反编译 / 377
8.1 反编译的概念及工具 / 377
8.2 反编译流程详解 / 378
8.2.1 使用apktool工具将apk文件反编译成原始的目录文件 / 379
8.2.2 使用dex2jar.bat工具将classes.dex文件转换为
classes.jar文件 / 381
8.2.3 使用jd-gui工具将classes.jar 转换为.java的源代码 / 383
附录A Linux简介 / 384
附录B C语言基础知识 / 386
第一篇 Android开发准备篇
第1章 构建开发环境及Android程序执行流程 / 2
1.1 构建开发环境 / 2
1.1.1 Android开发需要的工具 / 2
1.1.2 安装所需软件 / 3
1.2 Android程序的执行流程 / 6
1.2.1 Android系统启动过程 / 6
1.2.2 Android应用程序启动过程 / 9
第2章 Android SDK命令行工具 / 11
2.1 SDK命令行 / 11
2.2 shell命令 / 14
2.2.1 文件目录操作指令 / 14
2.2.2 系统管理命令 / 16
2.2.3 备份压缩命令 / 17
2.2.4 查看日志 / 18
2.3 使用Hierarchy Viewer查看层级视图 / 18
2.4 DDMS透视图 / 20
第二篇 Android UI篇
第3章 基础UI / 30
3.1 UI概述 / 30
3.2 布局(Layout) / 32
3.3 菜单(Menu) / 42
3.4 常用UI(Widgets) / 48
3.5 详解UI中的常用布局属性 / 190
第4章 Android高级UI / 193
4.1 抽象布局 / 193
4.1.1 <include>标签 / 193
4.1.2 <merge>标签 / 196
4.1.3 <viewStub>标签 / 198
4.2 Android样式和主题(style与theme) / 198
4.2.1 为Hello Word应用指定样式 / 199
4.2.2 为应用指定主题 / 201
4.3 自定义窗口标题 / 202
4.4 泡泡窗口(PopuWindow) / 205
4.4.1 泡泡窗口概述 / 205
4.4.2 泡泡窗口应用举例 / 206
4.5 ViewFlipper(视图容器) / 210
4.5.1 ViewFlipper常用方法及属性 / 210
4.5.2 使用ViewFlipper实现播放幻灯片效果 / 211
4.6 Fragment框架 / 215
4.6.1 Fragment应用举例 / 216
4.6.2 Fragment的生命周期 / 219
4.7 动画 / 220
4.7.1 动画特效之帧动画 / 220
4.7.2 动画特效之Tween补间动画 / 226
4.8 自定义UI控件 / 235
第三篇 Android NDK揭秘与实战篇
第5章 揭秘NDK / 240
5.1 初识JNI / 240
5.2 NDK开发 / 243
5.2.1 Cygwin、NDK、CDT工具的安装 / 244
5.2.2 NDK开发之HelloWorld1 / 247
5.2.3 NDK开发之HelloWorld2 / 254
5.2.4 在C代码中使用LogCat打印日志信息 / 259
5.2.5 NDK开发中常见的错误 / 261
5.2.6 Java与C语言之间如何传递数据 / 262
5.2.7 企业中JNI开发的流程 / 274
5.2.8 C语言如何调用Java语言 / 275
5.2.9 对中文乱码的处理 / 284
5.2.10 Java语言如何调用C++,C和C++在开发中的区别 / 288
第6章 NDK开发案例 / 295
6.1 锅炉压力值测试案例 / 295
6.1.1 创建应用与逻辑代码的实现 / 296
6.1.2 测试运行 / 301
6.2 Lame编码器的移植案例 / 304
6.2.1 创建应用与逻辑代码的实现 / 306
6.2.2 测试运行 / 333
第四篇 Android安全分析与反编译
第7章 Android安全分析 / 338
7.1 Android系统的安全沙箱与权限模型 / 338
7.2 手机重启的过程分析 / 340
7.3 0权限重启手机 / 345
7.4 谁动了我的日志 / 347
7.5 ROOT权限 / 354
7.6 ROOT后的安全案例一——禁止开机启动项 / 364
7.7 ROOT后的安全隐患案例二——KungFu病毒 / 369
第8章 反编译 / 377
8.1 反编译的概念及工具 / 377
8.2 反编译流程详解 / 378
8.2.1 使用apktool工具将apk文件反编译成原始的目录文件 / 379
8.2.2 使用dex2jar.bat工具将classes.dex文件转换为
classes.jar文件 / 381
8.2.3 使用jd-gui工具将classes.jar 转换.java的源代码 / 383
附录A Linux简介 / 384
附录B C语言基础知识 / 386