Android你只要懂这些就够了(套装共3册) 《精通Android》《Android软件安全与逆向分析》《疯狂Android讲义(第2版)》
目 录内容简介
《精通Android》
第1章 Android计算平台简介
1.1 面向新PC的全新平台
1.2 Android的历史
1.3 Dalvik VM剖析
1.4 理解Android软件栈
1.5 使用Android SDK开发最终用户应用程序
1.5.1 Android模拟器
1.5.2 Android UI
1.5.3 Android基础组件
1.5.4 高级UI概念
1.5.5 Android Service组件
1.5.6 Android媒体和电话组件
1.5.7 Android Java包
1.6 利用Android源代码
1.6.1 在线浏览Android源代码
1.6.2 使用Git下载Android源代码
1.7 本书的示例项目
1.8 小结
第2章 设置开发环境
2.1 设置环境
2.1.1 下载JDK 6
2.1.2 下载Eclipse 3.6
2.1.3 下载Android SDK
2.1.4 命令行窗口
2.1.5 安装ADT
2.2 了解基本组件
2.2.1 View
2.2.2 Activity
2.2.3 Fragment
2.2.4 Intent
2.2.5 ContentProvider
2.2.6 Service
2.2.7 AndroidManifest.xml
2.2.8 AVD
2.3 Hello World!
2.4 AVD
2.5 在真实设备上运行
2.6 剖析Android应用程序的结构
2.7 了解应用程序生命周期
2.8 简单调试
2.9 参考资料
2.10 小结
2.11 面试问题
第3章 使用Android资源
3.1 资源
3.1.1 字符串资源
3.1.2 布局资源
3.1.3 资源引用语法
3.1.4 定义资源ID供以后使用
3.1.5 已编译和未编译的Android资源
3.2 Android关键资源
3.3 使用任意XML资源文件
3.4 使用原始资源
3.5 使用资产
3.6 了解资源目录结构
3.7 资源和配置更改
3.8 参考资料URL
3.9 小结
3.10 面试问题
第4章 ContentProvider
4.1 探索Android内置的ContentProvider
4.1.1 在模拟器和可用设备上利用数据库
4.1.2 快速了解SQLite
4.2 ContentProvider的架构
4.2.1 Android内容URI的结构
4.2.2 Android MIME类型的结构
4.2.3 使用URI读取数据
4.2.4 使用游标
4.2.5 使用where子句
4.2.6 插入记录
4.2.7 将文件添加到ContentProvider中
4.2.8 更新和删除
4.3 实现ContentProvider
4.3.1 计划数据库
4.3.2 扩展ContentProvider
4.3.3 履行MIME类型契约
4.3.4 实现query方法
4.3.5 实现insert方法
4.3.6 实现update方法
4.3.7 实现delete方法
4.3.8 使用UriMatcher来解析URI
4.3.9 使用投影映射
4.3.10 注册提供程序
4.4 练习图书提供程序
4.4.1 添加图书
4.4.2 删除图书
4.4.3 获取图书数量
4.4.4 显示图书列表
4.5 资源
4.6 小结
4.7 面试问题
第5章 Intent
5.1 Android Intent基础知识
5.2 Android中可用的Intent
5.3 Intent的组成
5.3.1 Intent和数据URI
5.3.2 一般操作
5.3.3 使用extra信息
5.3.4 使用组件直接调用活动
5.3.5 Intent类别
5.3.6 将Intent解析为组件的规则
5.4 练习使用ACTION_PICK
5.5 练习使用GET_CONTENT操作
5.6 挂起的Intent
5.7 资源
5.8 小结
5.9 面试问题
第6章 构建用户界面和使用控件
6.1 Android中的UI开发
6.1.1 完全利用代码来构建UI
6.1.2 完全使用XML构建UI
6.1.3 使用XML结合代码构建UI
6.2 Android中的常见控件
6.2.1 文本控件
6.2.2 按钮控件
6.2.3 ImageView控件
6.2.4 日期和时间控件
6.2.5 MapView控件
6.3 适配器
6.3.1 SimpleCursorAdapter
6.3.2 了解ArrayAdapter
6.4 结合使用适配器和AdapterView
6.4.1 基本的列表控件:ListView
6.4.2 GridView控件
6.4.3 Spinner控件
6.4.4 Gallery控件
6.4.5 创建自定义适配器
6.4.6 Android中的其他控件
6.5 样式和主题
6.5.1 使用样式
6.5.2 使用主题
6.6 布局管理器
6.6.1 LinearLayout布局管理器
6.6.2 TableLayout布局管理器
6.6.3 RelativeLayout布局管理器
6.6.4 FrameLayout布局管理器
6.6.5 GridLayout布局管理器
6.6.6 为各种设备配置自定义布局
6.7 参考资料
6.8 小结
6.9 面试问题
第7章 使用菜单
7.1 Android菜单
7.1.1 创建菜单
7.1.2 使用菜单组
7.1.3 响应菜单项
7.2 使用其他菜单类型
7.2.1 展开的菜单
7.2.2 使用图标菜单
7.2.3 使用子菜单
7.2.4 使用上下文菜单
7.2.5 使用交替菜单
7.2.6 动态菜单
7.3 通过XML文件加载菜单
7.3.1 XML菜单资源文件的结构
7.3.2 填充XML菜单资源文件
7.3.3 响应基于XML的菜单项
7.3.4 4.0版本中的弹出式菜单
7.3.5 其他XML菜单标记简介
7.4 资源
7.5 小结
7.6 面试问题
第8章 多用途的碎片
8.1 什么是碎片
8.1.1 何时使用碎片
8.1.2 碎片的结构
8.1.3 碎片的生命周期
8.1.4 展示生命周期的示例碎片应用程序
8.2 FragmentTransactions和碎片后退栈
8.3 FragmentManager
8.3.1 引用碎片时的注意事项
8.3.2 保存片段状态
8.3.3 ListFragments和
8.3.4 在需要时调用独立的活动
8.3.5 碎片的持久化
8.4 碎片之间的通信方式
8.5 使用ObjectAnimator自定义动画
8.6 参考资料
8.7 小结
8.8 面试问题
第9章 对话框
9.1 使用Android对话框
9.2 对话框碎片
9.2.1 DialogFragment的基础知识
9.2.2 构建对话框碎片
9.2.3 DialogFragment示例应用程序
9.3 使用Toast
9.4 旧版本Android的对话框碎片
9.5 参考资料
9.6 小结
9.7 面试问题
第10章 ActionBar
10.1 ActionBar剖析
10.2 选项卡导航操作栏活动
10.2.1 实现基础活动类
10.2.2 为ActionBar分配统一的行为
10.2.3 实现选项卡监听器
10.2.4 实现选项卡操作栏活动
10.2.5 可滚动的调试文本视图布局
10.2.6 操作栏和菜单交互
10.2.7 Android描述文件
10.2.8 测试选项卡操作栏活动
10.3 列表导航操作栏活动
10.3.1 创建SpinnerAdapter
10.3.2 创建列表监听器
10.3.3 设置列表操作栏
10.3.4 更改BaseActionBar-Activity
10.3.5 更改AndroidManifest.xml
10.3.6 测试列表操作栏活动
10.4 标准导航操作栏活动
10.4.1 设置标准导航操作栏活动
10.4.2 更改BaseActionBar-Activity
10.4.3 更改AndroidManifest.xml
10.4.4 测试标准操作栏活动
10.5 工具栏与搜索视图
10.5.1 将搜索视图部件定义为菜单项
10.5.2 配置搜索结果活动
10.5.3 通过可搜索XML文件自定义搜索
10.5.4 在配置清单文件中定义搜索结果活动
10.5.5 确定搜索视图部件的搜索目标
10.6 操作栏和碎片
10.7 参考资料
10.8 小结
10.9 面试问题
第11章 高级调试与分析
11.1 启用高级调试
11.2 Debug透视图
11.3 DDMS透视图
11.4 Hierarchy View透视图
11.5 Traceview
11.6 adb命令
11.7 模拟器控制台
11.8 StrictMode
11.8.1 StrictMode策略
11.8.2 关闭StrictMode
11.8.3 在旧版本Android上使用StrictMode
11.8.4 StrictMode练习
11.9 参考资料
11.10 小结
11.11 面试问题
第12章 响应配置变化
12.1 配置变化过程
12.1.1 活动的销毁/创建过程
12.1.2 碎片的销毁/创建过程
12.1.3 使用FragmentManager保存碎片状态
12.1.4 使用碎片的setRetain-Instance
12.2 弃用的配置变化方法
12.3 参考资料
12.4 小结
12.5 面试问题
第13章 首选项及保存状态
13.1 探索首选项框架
13.1.1 ListPreference
13.1.2 CheckBoxPreference
13.1.3 EditTextPreference
13.1.4 RingtonePreference及MultiSelectListPreference
13.2 组织首选项
13.2.1 使用PreferenceCategory
13.2.2 创建依赖的子首选项
13.2.3 带标题的首选项
13.3 以编程方式操作首选项
13.3.1 使用首选项保存状态
13.3.2 使用DialogPreference
13.4 参考资料
13.5 小结
13.6 面试问题
第14章 探索安全性和权限
14.1 理解Android安全性模型
14.1.1 安全性概念概述
14.1.2 为部署签名应用程序
14.2 执行运行时安全性检查
14.2.1 进程边界上的安全性
14.2.2 声明和使用权限
14.2.3 理解和使用自定义权限
14.2.4 理解和使用URI权限
14.3 参考资料
14.4 小结
14.5 面试问题
第15章 构建和使用服务
15.1 使用HTTP服务
15.1.1 将HttpClient用于HTTP GET请求
15.1.2 将HttpClient用于HTTP POST请求(多部分POST请求示例)
15.1.3 SOAP、JSON和XML分析程序
15.1.4 处理异常
15.1.5 解决多线程问题
15.1.6 有趣的超时
15.1.7 使用HttpURLConnection
15.1.8 使用AndroidHttpClient
15.1.9 使用后台线程(AsyncTask)
15.1.10 使用DownloadManager获取文件
15.2 使用Android服务
15.2.1 Android中的服务
15.2.2 本地服务
15.2.3 AIDL服务
15.2.4 在AIDL中定义服务接口
15.2.5 实现AIDL接口
15.2.6 从客户端应用程序调用服务
15.2.7 向服务传递复杂的类型
15.3 参考资料
15.4 小结
15.5 面试问题
第16章 包
16.1 包和进程
16.1.1 包规范的细节
16.1.2 将包名称转换为进程名称
16.1.3 列出安装的包
16.1.4 通过包浏览器删除包
16.2 包签名过程回顾
16.2.1 理解数字签名:场景1
16.2.2 理解数字签名:场景2
16.2.3 一种理解数字签名的模式
16.2.4 数字签名执行方式
16.2.5 签名过程的影响
16.3 在包之间共享数据
16.3.1 共享用户ID的性质
16.3.2 共享数据的代码模式
16.4 库项目
16.4.1 库项目的概念
16.4.2 库项目的性质
16.4.3 创建库项目
16.4.4 创建使用库的Android项目
16.4.5 使用库项目的注意事项
16.5 参考资料
16.6 小结
16.7 面试问题
第17章 处理程序
17.1 Android组件和线程
17.1.1 活动在主线程上运行
17.1.2 广播接收程序在主线程上运行
17.1.3 服务在主线程上运行
17.1.4 ContentProvider在主线程上运行
17.1.5 单一主线程的影响
17.1.6 线程池、ContentProvider及外部服务组件
17.1.7 线程实用程序:发现线程
17.2 处理程序
17.2.1 持有主线程的影响
17.2.2 使用处理程序延迟主线程上的工作
17.2.3 延迟工作的处理程序源代码示例
17.2.4 构造合适的Message对象
17.2.5 将Message对象发送给队列
17.2.6 响应handleMessage回调
17.3 使用工作线程
17.3.1 从菜单调用工作线程
17.3.2 在工作线程与主线程之间通信
17.4 组件和进程寿命
17.4.1 活动生命周期
17.4.2 服务生命周期
17.4.3 接收程序生命周期
17.4.4 提供程序生命周期
17.5 参考资料
17.6 小结
17.7 面试问题
第18章 AsyncTask详解
18.1 实现一个简单的AsyncTask
18.1.1 实现AsyncTask的泛型
18.1.2 创建AsyncTask子类
18.1.3 实现第一个AsyncTask
18.1.4 调用一个AsyncTask
18.1.5 onPreExecute()回调方法和进度对话框
18.1.6 doInBackground()方法
18.1.7 触发onProgressUpdate()
18.1.8 onPostExecute()方法
18.1.9 升级为确定性进度对话框
18.2 AsyncTask的性质
18.3 设备旋转与AsyncTask
18.4 生命周期方法与AsyncTask
18.5 参考资料
18.6 小结
18.7 面试问题
第19章 广播接收程序和长期运行的服务
19.1 广播接收程序
19.1.1 发送广播
19.1.2 编写简单的接收程序:示例代码
19.1.3 在描述文件中注册接收程序
19.1.4 容纳多个接收程序
19.1.5 进程外接收程序项目
19.2 从接收程序使用通知
19.2.1 通过通知管理器监控通知
19.2.2 发送通知
19.2.3 在广播接收程序中启用活动
19.3 长期运行的接收程序和服务
19.3.1 长期运行的广播接收程序协议
19.3.2 IntentService
19.3.3 IntentService源代码
19.4 为广播接收程序扩展IntentService
19.4.1 长期运行的广播服务抽象
19.4.2 长期运行的接收程序
19.4.3 使用LightedGreenRoom抽象唤醒锁
19.5 长期运行的服务的实现
19.5.1 非粘滞性服务的细节
19.5.2 粘滞性服务的细节
19.5.3 非粘滞性的变体:重传送(redeliver)Intent
19.5.4 在onStartCommand中指定服务标志
19.5.5 挑选合适的粘滞性
19.5.6 从两个位置控制唤醒锁
19.5.7 长期运行的服务的实现
19.5.8 测试长期运行的服务
19.5.9 开发者的职责
19.5.10 框架的职责
19.6 关于项目下载文件的一些说明
19.7 参考资料
19.8 小结
19.9 面试问题
第20章 闹钟管理器
20.1 闹钟管理器基本知识:设置一个简单的闹钟
20.1.1 获取闹钟管理器人的访问权限
20.1.2 设置闹钟时间
20.1.3 创建闹钟接收程序
20.1.4 创建适合闹钟的PendingIntent
20.1.5 设置闹钟
20.1.6 测试项目
20.2 探索其他闹钟管理器场景
20.2.1 设置重复闹钟
20.2.2 取消闹钟
20.2.3 使用多个闹钟
20.2.4 Intent在设置闹钟时的首要职责
20.2.5 闹钟的持久化
20.3 闹钟管理器事实
20.4 参考资料
20.5 小结
20.6 面试问题
第21章 2D动画揭秘
21.1 逐帧动画
21.1.1 计划逐帧动画
21.1.2 创建活动
21.1.3 将动画添加到活动
21.2 布局动画
21.2.1 基本的补间动画类型
21.2.2 计划布局动画测试工具
21.2.3 创建活动和ListView
21.2.4 将ListView制作成动画
21.2.5 使用插值器
21.3 视图动画
21.3.1 理解视图动画
21.3.2 添加动画
21.3.3 使用Camera实现2D图像的深度效果
21.3.4 探索AnimationListener类
21.3.5 关于变换矩阵的一些说明
21.4 属性动画:新动画API
21.4.1 属性动画
21.4.2 计划一个属性动画的试验台
21.4.3 使用对象动画生成器创建基本视图动画
21.4.4 使用AnimatorSet实现顺序动画
21.4.5 用AnimatorSetBuilder设置动画关系
21.4.6 使用XML加载动画生成器
21.4.7 使用PropertyValuesHolder
21.4.8 视图属性动画
21.4.9 类型求值器
21.4.10 关键帧
21.4.11 布局转变
21.5 参考资料
21.6 小结
21.7 面试问题
第22章 地图和基于位置的服务
22.1 地图包
22.1.1 从谷歌获取map-api密钥
22.1.2 MapView和MapActivity
22.1.3 使用覆盖图添加标记
22.2 位置包
22.2.1 使用Android进行地理编码
22.2.2 使用后台线程进行地理编码
22.2.3 LocationManager服务
22.2.4 使用MyLocationOverlay显示位置
22.2.5 使用接近提醒
22.3 参考资料
22.4 小结
22.5 面试问题
第23章 电话API
23.1 使用SMS
23.1.1 发送SMS消息
23.1.2 监视传入的SMS消息
23.1.3 使用SMS文件夹
23.1.4 发送电子邮件
23.2 使用电话管理器
23.3 SIP
23.3.1 体验SipDemo
23.3.2 android.net.sip包
23.4 参考资料
23.5 小结
23.6 面试问题
第24章 媒体框架
24.1 使用媒体API
24.2 播放媒体
24.2.1 播放音频内容
24.2.2 播放视频内容
24.3 录制媒体
24.3.1 使用MediaRecorder录制音频
24.3.2 使用AudioRecord录制音频
24.3.3 视频录制
24.3.4 MediaStore类
24.3.5 使用Intnet录制音频
24.3.6 将媒体内容添加到媒体存储
24.3.7 为整个SD卡触发MediaScanner
24.4 参考资料
24.5 小结
24.6 面试问题
第25章 主屏幕部件
25.1 主屏幕部件的架构
25.1.1 什么是主屏幕部件
25.1.2 主屏幕部件的用户体验
25.1.3 部件的生命周期
25.2 示例部件应用程序
25.2.1 定义部件提供程序
25.2.2 定义部件尺寸
25.2.3 与部件布局相关的文件
25.2.4 实现部件提供程序
25.2.5 实现部件模型
25.2.6 实现部件配置活动
25.3 部件预览工具
25.4 部件局限性和扩展
25.5 基于容器的部件
25.6 资源
25.7 小结
25.8 面试问题
第26章 列表部件
26.1 远程视图概述
26.2 在远程视图中使用列表
26.2.1 准备远程布局
26.2.2 加载远程布局
26.2.3 创建RemoteViewsService
26.2.4 创建RemoteViewsFactory
26.2.5 创建onClick事件
26.2.6 响应onClick事件
26.3 工作样例:测试主屏幕列表部件
26.3.1 创建测试部件提供程序
26.3.2 创建远程视图工厂
26.3.3 编写远程视图服务的代码
26.3.4 部件主布局文件
26.3.5 部件提供程序元数据
26.3.6 AndroidManifest.xml
26.4 测试列表部件
26.5 参考资料
26.6 小结
26.7 面试问题
第27章 触摸屏
27.1 MotionEvent
27.1.1 MotionEvent对象
27.1.2 回收MotionEvent
27.1.3 使用VelocityTracker
27.2 多点触摸
27.3 触摸地图
27.4 手势
27.4.1 捏合手势
27.4.2 GestureDetector和OnGestureListener
27.4.3 自定义手势
27.4.4 Gestures Builder应用程序
27.5 参考资料
27.6 小结
27.7 面试问题
第28章 实现拖放操作
28.1 拖放操作简介
28.2 3.0及其以上版本的基本拖放操作
28.3 拖放操作示例应用程序
28.3.1 文件列表
28.3.2 示例拖放应用程序的布局
28.3.3 响应Dropzone的onDrag事件
28.3.4 创建拖动源视图
28.4 测试示例拖放应用程序
28.5 参考资料
28.6 小结
28.7 面试问题
第29章 传感器
29.1 什么是传感器
29.1.1 检测传感器
29.1.2 可以了解的传感器信息
29.2 获取传感器事件
29.3 解释传感器数据
29.3.1 光线传感器
29.3.2 接近传感器
29.3.3 温度传感器
29.3.4 压力传感器
29.3.5 陀螺仪传感器
29.3.6 加速度计
29.3.7 磁场传感器
29.3.8 结合使用加速度计和磁场传感器
29.3.9 方向传感器
29.3.10 磁偏角和Geomagnetic-Field
29.3.11 重力传感器
29.3.12 直线加速度传感器
29.3.13 旋转矢量传感器
29.3.14 近场通信传感器
29.4 参考资料
29.5 小结
29.6 面试问题
第30章 联系人API
30.1 账户
30.1.1 账户屏幕概览
30.1.2 账户与联系人的相关性
30.1.3 枚举账户
30.2 联系人应用程序
30.2.1 个人账号简介
30.2.2 显示联系人
30.2.3 显示联系人详细信息
30.2.4 编辑联系人详细信息
30.2.5 设置联系人的照片
30.2.6 导出联系人
30.2.7 各种联系人数据类型
30.3 联系人
30.3.1 联系人SQLite数据库
30.3.2 原始联系人
30.3.3 数据表
30.3.4 聚合联系人
30.3.5 view_contacts
30.3.6 contact_entities_view
30.4 联系人API
30.4.1 浏览账户
30.4.2 浏览聚合联系人
30.4.3 浏览原始联系人
30.4.4 浏览原始联系人数据
30.4.5 添加联系人和它的详细信息
30.5 控制聚合
30.6 同步的影响
30.7 个人账号
30.7.1 读取账号原始联系人
30.7.2 读取账号联系人数据
30.7.3 添加数据到个人账号
30.8 参考资料
30.9 小结
30.10 面试问题
第31章 部署应用程序Android Market
31.1 成为发布者
31.1.1 遵守规则
31.1.2 开发人员控制台
31.2 准备销售应用程序
31.2.1 针对不同设备进行测试
31.2.2 支持不同的屏幕尺寸
31.2.3 准备上传AndroidManifest.xml
31.2.4 本地化应用程序
31.2.5 准备应用程序图标
31.2.6 付费应用程序需要考虑的因素
31.2.7 将用户引导至Market
31.2.8 Android授权服务
31.2.9 使用ProGuard来优化及对抗盗版行为
31.2.10 准备上传.apk文件
31.3 上传应用程序
31.3.1 图表
31.3.2 列出详细信息
31.3.3 发布选项
31.3.4 联系信息
31.3.5 需遵守的规定
31.4 Android Market上的用户体验
31.5 更多发布途径
31.6 参考资料
31.7 小结
31.8 面试问题
《Android软件安全与逆向分析》
第1章 Android程序分析环境搭建
1.1 Windows分析环境搭建
1.1.1 安装JDK
1.1.2 安装Android SDK
1.1.3 安装Android NDK
1.1.4 Eclipse集成开发环境
1.1.5 安装CDT、ADT插件
1.1.6 创建Android Virtual Device
1.1.7 使用到的工具
1.2 Linux分析环境搭建
1.2.1 本书的Linux环境
1.2.2 安装JDK
1.2.3 在Ubuntu上安装Android SDK
1.2.4 在Ubuntu上安装Android NDK
1.2.5 在Ubuntu上安装Eclipse集成开发环境
1.2.6 在Ubuntu上安装CDT、ADT插件
1.2.7 创建Android Virtual Device
1.2.8 使用到的工具
1.3 本章小结
第2章 如何分析Android程序
2.1 编写第一个Android程序
2.1.1 使用Eclipse创建Android工程
2.1.2 编译生成APK文件
2.2 破解第一个程序
2.2.1 如何动手?
2.2.2 反编译APK文件
2.2.3 分析APK文件
2.2.4 修改Smali文件代码
2.2.5 重新编译APK文件并签名
2.2.6 安装测试
2.3 本章小结
第3章 进入Android Dalvik虚拟机
3.1 Dalvik虚拟机的特点——掌握Android程序的运行原理
3.1.1 Dalvik虚拟机概述
3.1.2 Dalvik虚拟机与Java虚拟机的区别
3.1.3 Dalvik虚拟机是如何执行程序的
3.1.4 关于Dalvik虚拟机JIT(即时编译)
3.2 Dalvik汇编语言基础为分析Android程序做准备
3.2.1 Dalvik指令格式
3.2.2 DEX文件反汇编工具
3.2.3 了解Dalvik寄存器
3.2.4 两种不同的寄存器表示方法——v命名法与p命名法
3.2.5 Dalvik字节码的类型、方法与字段表示方法
3.3 Dalvik指令集
3.3.1 指令特点
3.3.2 空操作指令
3.3.3 数据操作指令
3.3.4 返回指令
3.3.5 数据定义指令
3.3.6 锁指令
3.3.7 实例操作指令
3.3.8 数组操作指令
3.3.9 异常指令
3.3.10 跳转指令
3.3.11 比较指令
3.3.12 字段操作指令
3.3.13 方法调用指令
3.3.14 数据转换指令
3.3.15 数据运算指令
3.4 Dalvik指令集练习——写一个Dalvik版的Hello World
3.4.1 编写smali文件
3.4.2 编译smali文件
3.4.3 测试运行
3.5 本章小结
第4章 Android可执行文件
4.1 Android程序的生成步骤
4.2 Android程序的安装流程
4.3 dex文件格式
4.3.1 dex文件中的数据结构
4.3.2 dex文件整体结构
4.3.3 dex文件结构分析
4.4 odex文件格式
4.4.1 如何生成odex文件
4.4.2 odex文件整体结构
4.4.3 odex文件结构分析
4.5 dex文件的验证与优化工具dexopt的工作过程
4.6 Android应用程序另类破解方法
4.7 本章小结
第5章 静态分析Android程序
5.1 什么是静态分析
5.2 快速定位Android程序的关键代码
5.2.1 反编译apk程序
5.2.2 程序的主Activity
5.2.3 需重点关注的Application类
5.2.4 如何定位关键代码——六种方法
5.3 smali文件格式
5.4 Android程序中的类
5.4.1 内部类
5.4.2 监听器
5.4.3 注解类
5.4.4 自动生成的类
5.5 阅读反编译的smali代码
5.5.1 循环语句
5.5.2 switch分支语句
5.5.3 try/catch语句
5.6 使用IDA Pro静态分析Android程序
5.6.1 IDA Pro对Android的支持
5.6.2 如何操作
5.6.3 定位关键代码——使用IDA Pro进行破解的实例
5.7 恶意软件分析工具包——Androguard
5.7.1 Androguard的安装与配置
5.7.2 Androguard的使用方法
5.7.3 使用Androguard配合Gephi进行静态分析
5.7.4 使用androlyze.py进行静态分析
5.8 其他静态分析工具
5.9 阅读反编译的Java代码
5.9.1 使用dex2jar生成jar文件
5.9.2 使用jd-gui查看jar文件的源码
5.10 集成分析环境——santoku
5.11 本章小结
第6章 基于Android的ARM汇编语言基础——逆向原生!
6.1 Android与ARM处理器
6.1.1 ARM处理器架构概述
6.1.2 ARM处理器家族
6.1.3 Android支持的处理器架构
6.2 原生程序与ARM汇编语言——逆向你的原生Hello ARM
6.2.1 原生程序逆向初步
6.2.2 原生程序的生成过程
6.2.3 必须了解的ARM知识
6.3 ARM汇编语言程序结构
6.3.1 完整的ARM汇编程序
6.3.2 处理器架构定义
6.3.3 段定义
6.3.4 注释与标号
6.3.5 汇编器指令
6.3.6 子程序与参数传递
6.4 ARM处理器寻址方式
6.4.1 立即寻址
6.4.2 寄存器寻址
6.4.3 寄存器移位寻址
6.4.4 寄存器间接寻址
6.4.5 基址寻址
6.4.6 多寄存器寻址
6.4.7 堆栈寻址
6.4.8 块拷贝寻址
6.4.9 相对寻址
6.5 ARM与Thumb指令集
6.5.1 指令格式
6.5.2 跳转指令
6.5.3 存储器访问指令
6.5.4 数据处理指令
6.5.5 其他指令
6.6 用于多媒体编程与浮点计算的NEON与VFP指令集
6.7 本章小结
第7章 Android NDK程序逆向分析
7.1 Android中的原生程序
7.1.1 编写一个例子程序
7.1.2 如何编译原生程序
7.2 原生程序的启动流程分析
7.2.1 原生程序的入口函数
7.2.2 main函数究竟何时被执行
7.3 原生文件格式
7.4 原生C程序逆向分析
7.4.1 原生程序的分析方法
7.4.2 for循环语句反汇编代码的特点
7.4.3 if...else分支语句反汇编代码的特点
7.4.4 while循环语句反汇编代码的特点
7.4.5 switch分支语句反汇编代码的特点
7.4.6 原生程序的编译时优化
7.5 原生C++程序逆向分析
7.5.1 C++类的逆向
7.5.2 Android NDK对C++特性的支持
7.5.3 静态链接STL与动态链接STL的代码区别
7.6 Android NDK JNI API逆向分析
7.6.1 Android NDK提供了哪些函数
7.6.2 如何静态分析Android NDK程序
7.7 本章小结
第8章 动态调试Android程序
8.1 Android动态调试支持
8.2 DDMS的使用
8.2.1 如何启动DDMS
8.2.2 使用LogCat查看调试信息
8.3 定位关键代码
8.3.1 代码注入法——让程序自己吐出注册码
8.3.2 栈跟踪法
8.3.3 Method Profiling
8.4 使用AndBug调试Android程序
8.4.1 安装AndBug
8.4.2 使用AndBug
8.5 使用IDA Pro调试Android原生程序
8.5.1 调试Android原生程序
8.5.2 调试Android原生动态链接库
8.6 使用gdb调试Android原生程序
8.6.1 编译gdb与gdbserver
8.6.2 如何调试
8.7 本章小结
第9章 Android软件的破解技术
9.1 试用版软件
9.1.1 试用版软件的种类
9.1.2 实例破解——针对授权KEY方式的破解
9.2 序列号保护
9.3 网络验证
9.3.1 网络验证保护思路
9.3.2 实例破解——针对网络验证方式的破解
9.4 In-app Billing(应用内付费)
9.4.1 In-app Billing原理
9.4.2 In-app Billing破解方法
9.5 Google Play License保护
9.5.1 Google Play License保护机制
9.5.2 实例破解——针对Google Play License方式的破解
9.6 重启验证
9.6.1 重启验证保护思路
9.6.2 实例破解——针对重启验证方式的破解
9.7 如何破解其他类型的Android程序
9.7.1 Mono for Android开发的程序及其破解方法
9.7.2 Qt for Android开发的程序及其破解方法
9.8 本章小结
第10章 Android程序的反破解技术
10.1 对抗反编译
10.1.1 如何对抗反编译工具
10.1.2 对抗dex2jar
10.2 对抗静态分析
10.2.1 代码混淆技术
10.2.2 NDK保护
10.2.3 外壳保护
10.3 对抗动态调试
10.3.1 检测调试器
10.3.2 检测模拟器
10.4 防止重编译
10.4.1 检查签名
10.4.2 校验保护
10.5 本章小结
第11章 Android系统攻击与防范
11.1 Android系统安全概述
11.2 手机ROOT带来的危害
11.2.1 为什么要ROOT手机
11.2.2 手机ROOT后带来的安全隐患
11.2.3 Android手机ROOT原理
11.3 Android权限攻击
11.3.1 Android权限检查机制
11.3.2 串谋权限攻击
11.3.3 权限攻击检测
11.4 Android组件安全
11.4.1 Activity安全及Activity劫持演示
11.4.2 Broadcast Receiver 安全
11.4.3 Service安全
11.4.4 Content Provider安全
11.5 数据安全
11.5.1 外部存储安全
11.5.2 内部存储安全
11.5.3 数据通信安全
11.6 ROM安全
11.6.1 ROM的种类
11.6.2 ROM的定制过程
11.6.3 定制ROM的安全隐患
11.6.4 如何防范
11.7 本章小结
第12章 DroidKongFu变种病毒实例分析
12.1 DroidKongFu病毒介绍
12.2 配置病毒分析环境
12.3 病毒执行状态分析
12.3.1 使用APIMonitor初步分析
12.3.2 使用DroidBox动态分析
12.3.3 其他动态分析工具
12.4 病毒代码逆向分析
12.4.1 Java层启动代码分析
12.4.2 Native层启动代码分析
12.4.3 Native层病毒核心分析
12.5 DroidKongFu病毒框架总结
12.6 病毒防治
12.7 本章小结
……
《疯狂Android讲义(第2版)》
第1章 Android应用与开发环境
1.1 Android的发展和历史
1.1.1 Android的发展和简介
1.1.2 Android平台架构及特性
1.2 搭建Android开发环境
1.2.1 下载和安装Android SDK
1.2.2 安装运行、调试环境
1.2.3 安装Eclipse和ADT插件
1.3 Android常用开发工具的用法
1.3.1 在命令行创建、删除和浏览AVD
1.3.2 使用Android模拟器(Emulator)
1.3.3 使用DDMS进行调试
1.3.4 Android Debug Bridge(ADB)的用法
1.3.5 使用DX编译Android应用
1.3.6 使用Android Asset Packaging Tool(AAPT)打包资源
1.3.7 使用mksdcard管理虚拟SD卡
1.4 开始第一个Android应用
1.4.1 使用Eclipse开发第一个Android应用
1.4.2 通过ADT运行Android应用
1.5 Android应用结构分析
1.5.1 创建一个Android应用
1.5.2 自动生成的R.java
1.5.3 res目录说明
1.5.4 Android应用的清单文件:AndroidManifest.xml
1.5.5 应用程序权限说明
1.6 Android应用的基本组件介绍
1.6.1 Activity和View
1.6.2 Service
1.6.3 BroadcastReceiver
1.6.4 ContentProvider
1.6.5 Intent和IntentFilter
1.7 签名Android应用程序
1.7.1 在Eclipse中对Android应用签名
1.7.2 使用命令对APK包签名
1.8 本章小结
第2章 Android应用的界面编程
2.1 界面编程与视图(View)组件
2.1.1 视图组件与容器组件
2.1.2 使用XML布局文件控制UI界面
2.1.3 在代码中控制UI界面
2.1.4 使用XML布局文件和Java代码混合控制UI界面
2.1.5 开发自定义View
2.2 第1组UI组件:布局管理器
2.2.1 线性布局
2.2.2 表格布局
2.2.3 帧布局
2.2.4 相对布局
2.2.5 Android 4.0新增的网格布局
2.2.6 绝对布局
2.3 第2组UI组件:TextView及其子类
2.3.1 文本框(TextView)与编辑框(EditText)的功能和用法
2.3.2 EditText的功能与用法
2.3.3 按钮(Button)组件的功能和用法
2.3.4 使用9Patch图片作为按钮背景
2.3.5 单选按钮(RadioButton)与复选框(CheckBox)的功能与用法
2.3.6 状态开关按钮(ToggleButton)与开关(Switch)的功能与用法
2.3.7 时钟(AnalogClock和DigitalClock)的功能与用法
2.3.8 计时器(Chronometer)
2.4 第3组UI组件:ImageView及其子类
2.5 第4组UI组件:AdapterView及子类
2.5.1 列表视图(ListView)和ListActivity
2.5.2 Adapter接口及实现类
2.5.3 自动完成文本框(AutoCompleteTextView)的功能和用法
2.5.4 网格视图(GridView)功能和用法
2.5.5 可展开的列表组件(ExpandableListView)
2.5.6 Spinner的功能和用法
2.5.7 画廊视图(Gallery)的功能和用法
2.5.8 AdapterViewFlipper的功能与用法
2.5.9 StackView的功能与用法
2.6 第5组UI组件:ProgressBar及其子类
2.6.1 进度条(ProgressBar)的功能与用法
2.6.2 拖动条(SeekBar)的功能和用法
2.6.3 星级评分条(RatingBar)的功能和用法
2.7 第6组UI组件:ViewAnimator及其子类
2.7.1 ViewSwitcher的功能与用法
2.7.2 图像切换器(ImageSwitcher)的功能与用法
2.7.3 文本切换器(TextSwitcher)的功能与用法
2.7.4 ViewFlipper的功能与用法
2.8 各种杂项组件
2.8.1 使用Toast显示提示信息框
2.8.2 日历视图(CalendarView)组件的功能和用法
2.8.3 日期、时间选择器(DatePicker和TimePicker)的功能和用法
2.8.4 数值选择器(NumberPicker)的功能与用法
2.8.5 搜索框(SearchView)的功能与用法
2.8.6 选项卡(TabHost)的功能和用法
2.8.7 滚动视图(ScrollView)的功能和用法
2.8.8 Notification的功能与用法
2.9 对话框
2.9.1 使用AlertDialog创建对话框
2.9.2 对话框风格的窗口
2.9.3 使用PopupWindow
2.9.4 使用DatePickerDialog、TimePickerDialog
2.9.5 使用ProgressDialog创建进度对话框
2.10 菜单
2.10.1 选项菜单和子菜单(SubMenu)
2.10.2 使用监听器来监听菜单事件
2.10.3 创建复选菜单项和单选菜单项
2.10.4 设置与菜单项关联的Activity
2.10.5 上下文菜单
2.10.6 使用XML文件定义菜单
2.10.7 使用PopupMenu创建弹出式菜单
2.11 使用活动条(ActionBar)
2.11.1 启用ActionBar
2.11.2 使用ActionBar显示选项菜单
2.11.3 启用程序图标导航
2.11.4 添加Action View
2.11.5 使用ActionBar实现Tab导航
2.11.6 使用ActionBar实现下拉式导航
2.12 本章小结
第3章 Android的事件处理
3.1 Android事件处理概述
3.2 基于监听的事件处理
3.2.1 监听的处理模型
3.2.2 事件和事件监听器
3.2.3 内部类作为事件监听器类
3.2.4 外部类作为事件监听器类
3.2.5 Activity本身作为事件监听器
3.2.6 匿名内部类作为事件监听器类
3.2.7 直接绑定到标签
3.3 基于回调的事件处理
3.3.1 回调机制与监听机制
3.3.2 基于回调的事件传播
3.3.3 重写onTouchEvent方法响应触摸屏事件
3.4 响应的系统设置的事件
3.4.1 Configuration类简介
3.4.2 重写onConfigurationChanged响应系统设置更改
3.5 Handler消息传递机制
3.5.1 Handler类简介
3.5.2 Handler、Loop、MessageQueue的工作原理
3.6 异步任务(AsyncTask)
3.7 本章小结
第4章 深入理解Activity与Fragment
4.1 建立、配置和使用Activity
4.1.1 Activity
4.1.2 配置Activity
4.1.3 启动、关闭Activity
4.1.4 使用Bundle在Activity之间交换数据
4.1.5 启动其他Activity并返回结果
4.2 Activity的回调机制
4.3 Activity的生命周期与加载模式
4.3.1 Activity的生命周期演示
4.3.2 Activity与Servlet的相似性与区别
4.3.3 Activity的4种加载模式
4.4 Fragment详解
4.4.1 Fragment概述及其设计哲学
4.4.2 创建Fragment
4.4.3 Fragment与Activity通信
4.4.4 Fragment管理与Fragment事务
4.5 Fragment的生命周期
4.6 本章小结
第5章 使用Intent和IntentFilter进行通信
5.1 Intent对象详解
5.1.1 使用Intent启动系统组件
5.2 Intent的属性及intent-filter配置
5.2.1 Component属性
5.2.2 Action、Category属性与intent-filter配置
5.2.3 指定Action、Category调用系统Activity
5.2.4 Data、Type属性与intent-filter配置
5.2.5 Extra属性
5.2.6 Flag属性
5.3 使用Intent创建Tab页面
5.4 本章小结
第6章 Android应用的资源
6.1 资源的类型及存储方式
6.1.1 资源的类型以及存储方式
6.1.2 使用资源
6.2 使用字符串、颜色、尺寸资源
6.2.1 颜色值的定义
6.2.2 定义字符串、颜色、尺寸资源文件
6.2.3 使用字符串、颜色、尺寸资源
6.3 数组(Array)资源
6.4 使用(Drawable)资源
6.4.1 图片资源
6.4.2 StateListDrawable资源
6.4.3 LayerDrawable资源
6.4.4 ShapeDrawable资源
6.4.5 ClipDrawable资源
6.4.6 AnimationDrawable资源
6.5 属性动画(Property Animation)资源
6.6 使用原始XML资源
6.6.1 定义原始XML资源
6.6.2 使用原始XML文件
6.7 使用布局(Layout)资源
6.8 使用菜单(Menu)资源
6.9 样式(Style)和主题(Theme)资源
6.9.1 样式资源
6.9.2 主题资源
6.10 属性(Attribute)资源
6.11 使用原始资源
6.12 国际化和资源自适应
6.12.1 Java国际化的思路
6.12.2 Java支持的语言和国家
6.12.3 完成程序国际化
6.12.4 为Android应用提供国际化资源
6.12.5 国际化Android应用
6.13 自适应不同屏幕的资源
6.14 本章小结
第7章 图形与图像处理
7.1 使用简单图片
7.1.1 使用Drawable对象
7.1.2 Bitmap和BitmapFactory
7.2 绘图
7.2.1 Android绘图基础:Canvas、Paint等
7.2.2 Path类
7.2.3 绘制游戏动画
7.3 图形特效处理
7.3.1 使用Matrix控制变换
7.3.2 使用drawBitmapMesh扭曲图像
7.3.3 使用Shader填充图形
7.4 逐帧(Frame)动画
7.4.1 AnimationDrawable与逐帧动画
7.5 补间(Tween)动画
7.5.1 Tween动画与Interpolator
7.5.2 位置、大小、旋转度、透明度改变的补间动画
7.5.3 自定义补间动画
7.6 属性动画
7.6.1 属性动画的API
7.6.2 使用属性动画
7.7 使用SurfaceView实现动画
7.7.1 SurfaceView的绘图机制
7.8 本章小结
第8章 Android数据存储与IO
8.1 使用SharedPreferences
8.1.1 SharedPreferences与Editor简介
8.1.2 SharedPreferences的存储位置和格式
8.1.3 读、写其他应用SharedPreferences
8.2 File存储
8.2.1 openFileOutput和openFileInput
8.2.2 读写SD卡上的文件
8.3 SQLite数据库
8.3.1 SQLiteDatabase简介
8.3.2 创建数据库和表
8.3.3 使用SQL语句操作SQLite数据库
8.3.4 使用sqlite3工具
8.3.5 使用特定方法操作SQLite数据库
8.3.6 事务
8.3.7 SQLiteOpenHelper类
8.4 手势(Gesture)
8.4.1 手势检测
8.4.2 增加手势
8.4.3 识别用户的手势
8.5 自动朗读(TTS)
8.6 本章小结
第9章 使用ContentProvider实现数据共享
9.1 数据共享标准:ContentProvider简介
9.1.1 ContentProvider简介
9.1.2 Uri简介
9.1.3 使用ContentResolver操作数据
9.2 开发ContentProvider
9.2.1 ContentProvider与ContentResolver的关系
9.2.2 开发ContentProvider
9.2.3 配置ContentProvider
9.2.4 使用ContentResolver调用方法
9.2.5 创建ContentProvider的说明
9.3 操作系统的ContentProvider
9.3.1 使用ContentProvider管理联系人
9.3.2 使用ContentProvider管理多媒体内容
9.4 监听ContentProvider的数据改变
9.4.1 ContentObserver简介
9.5 本章小结
第10章 Service与BroadcastReceiver
10.1 Service简介
10.1.1 创建、配置Service
10.1.2 启动和停止Service
10.1.3 绑定本地Service并与之通信
10.1.4 Service的生命周期
10.1.5 使用IntentService
10.2 跨进程调用Service(AIDL Service)
10.2.1 AIDL Service简介
10.2.2 创建AIDL文件
10.2.3 将接口暴露给客户端
10.2.4 客户端访问AIDLService
10.3 电话管理器(TelephonyManager)
10.4 短信管理器(SmsManager)
10.5 音频管理器(AudioManager)
10.5.1 AudioManager简介
10.6 振动器(Vibrator)
10.6.1 Vibrator简介
10.6.2 使用Vibrator控制手机振动
10.7 手机闹钟服务(AlarmManager)
10.7.1 AlarmManager简介
10.7.2 设置闹钟
10.8 接收广播消息
10.8.1 BroadcastReceiver简介
10.8.2 发送广播
10.8.3 有序广播
10.9 接收系统广播消息
10.10 本章小结
第11章 多媒体应用开发
11.1 音频和视频的播放
11.1.1 使用MediaPlayer播放音频
11.1.2 音乐特效控制
11.1.3 使用SoundPool播放音效
11.1.4 使用VideoView播放视频
11.1.5 使用MediaPlayer和SurfaceView播放视频
11.2 使用MediaRecorder录制音频
11.3 控制摄像头拍照
11.3.1 通过Camera进行拍照
11.3.2 录制视频短片
11.4 本章小结
第12章 OpenGL与3D应用开发
12.1 3D图像与3D开发的基本知识
12.2 OpenGL和OpenGL ES简介
12.3 绘制2D图形
12.3.1 在Android应用中使用OpenGL ES
12.3.2 绘制平面上的多边形
12.3.3 旋转
12.4 绘制3D图形
12.4.1 构建3D图形
12.4.2 应用纹理贴图
12.5 本章小结
第13章 Android网络应用
13.1 基于TCP协议的网络通信
13.1.1 TCP协议基础
13.1.2 使用ServerSocket创建TCP服务器端
13.1.3 使用Socket进行通信
13.1.4 加入多线程
13.2 使用URL访问网络资源
13.2.1 使用URL读取网络资源
13.2.2 使用URLConnection提交请求
13.3 使用HTTP访问网络
13.3.1 使用HttpURLConnection 6
13.3.2 使用Apache HttpClient
13.4 使用WebView视图显示网页
13.4.1 使用WebView浏览网页
13.4.2 使用WebView加载HTML代码
13.4.3 使用WebView中的JavaScript调用Android方法
13.5 使用Web Service进行网络编程
13.5.1 Web Service平台概述
13.5.2 使用Android应用调用Web Service
13.6 本章小结
第14章 管理Android手机桌面
14.1 管理手机桌面
14.1.1 删除桌面组件
14.1.2 添加桌面组件
14.2 改变手机壁纸
14.2.1 开发动态壁纸(Live Wallpapers)
14.3 通过程序添加快捷方式
14.4 管理桌面控件
14.4.1 开发桌面控件
14.4.2 Android 4.0新增的显示数据集的桌面控件
14.5 本章小结
第15章 传感器应用开发
15.1 利用Android的传感器
15.1.1 开发传感器应用
15.2 Android的常用传感器
15.2.1 方向传感器Orientation
15.2.2 磁场传感器Magnetic Field
15.2.3 温度传感器Temperature
15.2.4 光传感器Light
15.2.5 压力传感器Pressure
15.3 传感器应用案例
15.4 本章小结
第16章 GPS应用开发
16.1 支持GPS的核心API
16.2 获取LocationProvider
16.2.1 获取所有可用的LocationProvider
16.2.2 通过名称获得指定LocationProvider
16.2.3 根据Criteria获得LocationProvider
16.3 获取定位信息
16.3.1 通过模拟器发送GPS信息
16.3.2 获取定位数据
16.4 临近警告
16.5 本章小结
第17章 使用Google Map服务
17.1. 调用Google Map的准备
17.1.1 获取Map API Key
17.1.2 创建支持Google Map API的AVD
17.2 根据GPS信息在地图上定位
17.3 GPS导航
17.4 根据地址定位
17.4.1 地址解析与反向地址解析
17.4.2 根据地址定位
17.5 本章小结
第18章 疯狂连连看
18.1 连连看游戏简介
18.2 开发游戏界面
18.2.1 开发界面布局
18.2.2 开发游戏界面组件
18.2.3 处理方块之间的连接线
18.3 连连看的状态数据模型
18.3.1 定义数据模型
18.3.2 初始化游戏状态数据
18.4 加载界面的图片
18.5 实现游戏Activity
18.6 实现游戏逻辑
18.6.1 定义GameService组件接口
18.6.2 实现GameService组件
18.6.3 获取触碰点的方块
18.6.4 判断两个方块是否可以相连
18.6.5 定义获取通道的工具方法
18.6.6 没有转折点的横向连接
18.6.7 没有转折点的纵向连接
18.6.8 一个转折点的连接
18.6.9 两个转折点的连接
18.6.10 找出最短距离
18.7 本章小结
第19章 电子拍卖系统
19.1 系统功能简介和架构设计
19.1.1 系统功能简介
19.1.2 系统架构设计
19.2 JSON简介
19.2.1 使用JSON语法创建对象
19.2.2 使用JSON语法创建数组
19.2.3 Java的JSON支持
19.3 发送请求的工具类
19.4 用户登录
19.4.1 处理登录的Servlet
19.4.2 用户登录
19.5 查看流拍物品
19.5.1 查看流拍物品的Servlet
19.5.2 查看流拍物品
19.6 管理物品种类
19.6.1 浏览物品种类的Servlet
19.6.2 查看物品种类
19.6.3 添加种类的Servlet
19.6.4 添加物品种类
19.7 管理拍卖物品
19.7.1 查看自己的拍卖物品的Servlet
19.7.2 查看自己的拍卖物品
19.7.3 添加拍卖物品的Servlet
19.7.4 添加拍卖物品
19.8 参与竞拍
19.8.1 选择物品种类
19.8.2 根据种类浏览物品的Servlet
19.8.3 根据种类浏览物品
19.8.4 参与竞价的Servlet
19.8.5 参与竞价
19.9 权限控制
19.10 本章小结
第1章 Android计算平台简介
1.1 面向新PC的全新平台
1.2 Android的历史
1.3 Dalvik VM剖析
1.4 理解Android软件栈
1.5 使用Android SDK开发最终用户应用程序
1.5.1 Android模拟器
1.5.2 Android UI
1.5.3 Android基础组件
1.5.4 高级UI概念
1.5.5 Android Service组件
1.5.6 Android媒体和电话组件
1.5.7 Android Java包
1.6 利用Android源代码
1.6.1 在线浏览Android源代码
1.6.2 使用Git下载Android源代码
1.7 本书的示例项目
1.8 小结
第2章 设置开发环境
2.1 设置环境
2.1.1 下载JDK 6
2.1.2 下载Eclipse 3.6
2.1.3 下载Android SDK
2.1.4 命令行窗口
2.1.5 安装ADT
2.2 了解基本组件
2.2.1 View
2.2.2 Activity
2.2.3 Fragment
2.2.4 Intent
2.2.5 ContentProvider
2.2.6 Service
2.2.7 AndroidManifest.xml
2.2.8 AVD
2.3 Hello World!
2.4 AVD
2.5 在真实设备上运行
2.6 剖析Android应用程序的结构
2.7 了解应用程序生命周期
2.8 简单调试
2.9 参考资料
2.10 小结
2.11 面试问题
第3章 使用Android资源
3.1 资源
3.1.1 字符串资源
3.1.2 布局资源
3.1.3 资源引用语法
3.1.4 定义资源ID供以后使用
3.1.5 已编译和未编译的Android资源
3.2 Android关键资源
3.3 使用任意XML资源文件
3.4 使用原始资源
3.5 使用资产
3.6 了解资源目录结构
3.7 资源和配置更改
3.8 参考资料URL
3.9 小结
3.10 面试问题
第4章 ContentProvider
4.1 探索Android内置的ContentProvider
4.1.1 在模拟器和可用设备上利用数据库
4.1.2 快速了解SQLite
4.2 ContentProvider的架构
4.2.1 Android内容URI的结构
4.2.2 Android MIME类型的结构
4.2.3 使用URI读取数据
4.2.4 使用游标
4.2.5 使用where子句
4.2.6 插入记录
4.2.7 将文件添加到ContentProvider中
4.2.8 更新和删除
4.3 实现ContentProvider
4.3.1 计划数据库
4.3.2 扩展ContentProvider
4.3.3 履行MIME类型契约
4.3.4 实现query方法
4.3.5 实现insert方法
4.3.6 实现update方法
4.3.7 实现delete方法
4.3.8 使用UriMatcher来解析URI
4.3.9 使用投影映射
4.3.10 注册提供程序
4.4 练习图书提供程序
4.4.1 添加图书
4.4.2 删除图书
4.4.3 获取图书数量
4.4.4 显示图书列表
4.5 资源
4.6 小结
4.7 面试问题
第5章 Intent
5.1 Android Intent基础知识
5.2 Android中可用的Intent
5.3 Intent的组成
5.3.1 Intent和数据URI
5.3.2 一般操作
5.3.3 使用extra信息
5.3.4 使用组件直接调用活动
5.3.5 Intent类别
5.3.6 将Intent解析为组件的规则
5.4 练习使用ACTION_PICK
5.5 练习使用GET_CONTENT操作
5.6 挂起的Intent
5.7 资源
5.8 小结
5.9 面试问题
第6章 构建用户界面和使用控件
6.1 Android中的UI开发
6.1.1 完全利用代码来构建UI
6.1.2 完全使用XML构建UI
6.1.3 使用XML结合代码构建UI
6.2 Android中的常见控件
6.2.1 文本控件
6.2.2 按钮控件
6.2.3 ImageView控件
6.2.4 日期和时间控件
6.2.5 MapView控件
6.3 适配器
6.3.1 SimpleCursorAdapter
6.3.2 了解ArrayAdapter
6.4 结合使用适配器和AdapterView
6.4.1 基本的列表控件:ListView
6.4.2 GridView控件
6.4.3 Spinner控件
6.4.4 Gallery控件
6.4.5 创建自定义适配器
6.4.6 Android中的其他控件
6.5 样式和主题
6.5.1 使用样式
6.5.2 使用主题
6.6 布局管理器
6.6.1 LinearLayout布局管理器
6.6.2 TableLayout布局管理器
6.6.3 RelativeLayout布局管理器
6.6.4 FrameLayout布局管理器
6.6.5 GridLayout布局管理器
6.6.6 为各种设备配置自定义布局
6.7 参考资料
6.8 小结
6.9 面试问题
第7章 使用菜单
7.1 Android菜单
7.1.1 创建菜单
7.1.2 使用菜单组
7.1.3 响应菜单项
7.2 使用其他菜单类型
7.2.1 展开的菜单
7.2.2 使用图标菜单
7.2.3 使用子菜单
7.2.4 使用上下文菜单
7.2.5 使用交替菜单
7.2.6 动态菜单
7.3 通过XML文件加载菜单
7.3.1 XML菜单资源文件的结构
7.3.2 填充XML菜单资源文件
7.3.3 响应基于XML的菜单项
7.3.4 4.0版本中的弹出式菜单
7.3.5 其他XML菜单标记简介
7.4 资源
7.5 小结
7.6 面试问题
第8章 多用途的碎片
8.1 什么是碎片
8.1.1 何时使用碎片
8.1.2 碎片的结构
8.1.3 碎片的生命周期
8.1.4 展示生命周期的示例碎片应用程序
8.2 FragmentTransactions和碎片后退栈
8.3 FragmentManager
8.3.1 引用碎片时的注意事项
8.3.2 保存片段状态
8.3.3 ListFragments和
8.3.4 在需要时调用独立的活动
8.3.5 碎片的持久化
8.4 碎片之间的通信方式
8.5 使用ObjectAnimator自定义动画
8.6 参考资料
8.7 小结
8.8 面试问题
第9章 对话框
9.1 使用Android对话框
9.2 对话框碎片
9.2.1 DialogFragment的基础知识
9.2.2 构建对话框碎片
9.2.3 DialogFragment示例应用程序
9.3 使用Toast
9.4 旧版本Android的对话框碎片
9.5 参考资料
9.6 小结
9.7 面试问题
第10章 ActionBar
10.1 ActionBar剖析
10.2 选项卡导航操作栏活动
10.2.1 实现基础活动类
10.2.2 为ActionBar分配统一的行为
10.2.3 实现选项卡监听器
10.2.4 实现选项卡操作栏活动
10.2.5 可滚动的调试文本视图布局
10.2.6 操作栏和菜单交互
10.2.7 Android描述文件
10.2.8 测试选项卡操作栏活动
10.3 列表导航操作栏活动
10.3.1 创建SpinnerAdapter
10.3.2 创建列表监听器
10.3.3 设置列表操作栏
10.3.4 更改BaseActionBar-Activity
10.3.5 更改AndroidManifest.xml
10.3.6 测试列表操作栏活动
10.4 标准导航操作栏活动
10.4.1 设置标准导航操作栏活动
10.4.2 更改BaseActionBar-Activity
10.4.3 更改AndroidManifest.xml
10.4.4 测试标准操作栏活动
10.5 工具栏与搜索视图
10.5.1 将搜索视图部件定义为菜单项
10.5.2 配置搜索结果活动
10.5.3 通过可搜索XML文件自定义搜索
10.5.4 在配置清单文件中定义搜索结果活动
10.5.5 确定搜索视图部件的搜索目标
10.6 操作栏和碎片
10.7 参考资料
10.8 小结
10.9 面试问题
第11章 高级调试与分析
11.1 启用高级调试
11.2 Debug透视图
11.3 DDMS透视图
11.4 Hierarchy View透视图
11.5 Traceview
11.6 adb命令
11.7 模拟器控制台
11.8 StrictMode
11.8.1 StrictMode策略
11.8.2 关闭StrictMode
11.8.3 在旧版本Android上使用StrictMode
11.8.4 StrictMode练习
11.9 参考资料
11.10 小结
11.11 面试问题
第12章 响应配置变化
12.1 配置变化过程
12.1.1 活动的销毁/创建过程
12.1.2 碎片的销毁/创建过程
12.1.3 使用FragmentManager保存碎片状态
12.1.4 使用碎片的setRetain-Instance
12.2 弃用的配置变化方法
12.3 参考资料
12.4 小结
12.5 面试问题
第13章 首选项及保存状态
13.1 探索首选项框架
13.1.1 ListPreference
13.1.2 CheckBoxPreference
13.1.3 EditTextPreference
13.1.4 RingtonePreference及MultiSelectListPreference
13.2 组织首选项
13.2.1 使用PreferenceCategory
13.2.2 创建依赖的子首选项
13.2.3 带标题的首选项
13.3 以编程方式操作首选项
13.3.1 使用首选项保存状态
13.3.2 使用DialogPreference
13.4 参考资料
13.5 小结
13.6 面试问题
第14章 探索安全性和权限
14.1 理解Android安全性模型
14.1.1 安全性概念概述
14.1.2 为部署签名应用程序
14.2 执行运行时安全性检查
14.2.1 进程边界上的安全性
14.2.2 声明和使用权限
14.2.3 理解和使用自定义权限
14.2.4 理解和使用URI权限
14.3 参考资料
14.4 小结
14.5 面试问题
第15章 构建和使用服务
15.1 使用HTTP服务
15.1.1 将HttpClient用于HTTP GET请求
15.1.2 将HttpClient用于HTTP POST请求(多部分POST请求示例)
15.1.3 SOAP、JSON和XML分析程序
15.1.4 处理异常
15.1.5 解决多线程问题
15.1.6 有趣的超时
15.1.7 使用HttpURLConnection
15.1.8 使用AndroidHttpClient
15.1.9 使用后台线程(AsyncTask)
15.1.10 使用DownloadManager获取文件
15.2 使用Android服务
15.2.1 Android中的服务
15.2.2 本地服务
15.2.3 AIDL服务
15.2.4 在AIDL中定义服务接口
15.2.5 实现AIDL接口
15.2.6 从客户端应用程序调用服务
15.2.7 向服务传递复杂的类型
15.3 参考资料
15.4 小结
15.5 面试问题
第16章 包
16.1 包和进程
16.1.1 包规范的细节
16.1.2 将包名称转换为进程名称
16.1.3 列出安装的包
16.1.4 通过包浏览器删除包
16.2 包签名过程回顾
16.2.1 理解数字签名:场景1
16.2.2 理解数字签名:场景2
16.2.3 一种理解数字签名的模式
16.2.4 数字签名执行方式
16.2.5 签名过程的影响
16.3 在包之间共享数据
16.3.1 共享用户ID的性质
16.3.2 共享数据的代码模式
16.4 库项目
16.4.1 库项目的概念
16.4.2 库项目的性质
16.4.3 创建库项目
16.4.4 创建使用库的Android项目
16.4.5 使用库项目的注意事项
16.5 参考资料
16.6 小结
16.7 面试问题
第17章 处理程序
17.1 Android组件和线程
17.1.1 活动在主线程上运行
17.1.2 广播接收程序在主线程上运行
17.1.3 服务在主线程上运行
17.1.4 ContentProvider在主线程上运行
17.1.5 单一主线程的影响
17.1.6 线程池、ContentProvider及外部服务组件
17.1.7 线程实用程序:发现线程
17.2 处理程序
17.2.1 持有主线程的影响
17.2.2 使用处理程序延迟主线程上的工作
17.2.3 延迟工作的处理程序源代码示例
17.2.4 构造合适的Message对象
17.2.5 将Message对象发送给队列
17.2.6 响应handleMessage回调
17.3 使用工作线程
17.3.1 从菜单调用工作线程
17.3.2 在工作线程与主线程之间通信
17.4 组件和进程寿命
17.4.1 活动生命周期
17.4.2 服务生命周期
17.4.3 接收程序生命周期
17.4.4 提供程序生命周期
17.5 参考资料
17.6 小结
17.7 面试问题
第18章 AsyncTask详解
18.1 实现一个简单的AsyncTask
18.1.1 实现AsyncTask的泛型
18.1.2 创建AsyncTask子类
18.1.3 实现第一个AsyncTask
18.1.4 调用一个AsyncTask
18.1.5 onPreExecute()回调方法和进度对话框
18.1.6 doInBackground()方法
18.1.7 触发onProgressUpdate()
18.1.8 onPostExecute()方法
18.1.9 升级为确定性进度对话框
18.2 AsyncTask的性质
18.3 设备旋转与AsyncTask
18.4 生命周期方法与AsyncTask
18.5 参考资料
18.6 小结
18.7 面试问题
第19章 广播接收程序和长期运行的服务
19.1 广播接收程序
19.1.1 发送广播
19.1.2 编写简单的接收程序:示例代码
19.1.3 在描述文件中注册接收程序
19.1.4 容纳多个接收程序
19.1.5 进程外接收程序项目
19.2 从接收程序使用通知
19.2.1 通过通知管理器监控通知
19.2.2 发送通知
19.2.3 在广播接收程序中启用活动
19.3 长期运行的接收程序和服务
19.3.1 长期运行的广播接收程序协议
19.3.2 IntentService
19.3.3 IntentService源代码
19.4 为广播接收程序扩展IntentService
19.4.1 长期运行的广播服务抽象
19.4.2 长期运行的接收程序
19.4.3 使用LightedGreenRoom抽象唤醒锁
19.5 长期运行的服务的实现
19.5.1 非粘滞性服务的细节
19.5.2 粘滞性服务的细节
19.5.3 非粘滞性的变体:重传送(redeliver)Intent
19.5.4 在onStartCommand中指定服务标志
19.5.5 挑选合适的粘滞性
19.5.6 从两个位置控制唤醒锁
19.5.7 长期运行的服务的实现
19.5.8 测试长期运行的服务
19.5.9 开发者的职责
19.5.10 框架的职责
19.6 关于项目下载文件的一些说明
19.7 参考资料
19.8 小结
19.9 面试问题
第20章 闹钟管理器
20.1 闹钟管理器基本知识:设置一个简单的闹钟
20.1.1 获取闹钟管理器人的访问权限
20.1.2 设置闹钟时间
20.1.3 创建闹钟接收程序
20.1.4 创建适合闹钟的PendingIntent
20.1.5 设置闹钟
20.1.6 测试项目
20.2 探索其他闹钟管理器场景
20.2.1 设置重复闹钟
20.2.2 取消闹钟
20.2.3 使用多个闹钟
20.2.4 Intent在设置闹钟时的首要职责
20.2.5 闹钟的持久化
20.3 闹钟管理器事实
20.4 参考资料
20.5 小结
20.6 面试问题
第21章 2D动画揭秘
21.1 逐帧动画
21.1.1 计划逐帧动画
21.1.2 创建活动
21.1.3 将动画添加到活动
21.2 布局动画
21.2.1 基本的补间动画类型
21.2.2 计划布局动画测试工具
21.2.3 创建活动和ListView
21.2.4 将ListView制作成动画
21.2.5 使用插值器
21.3 视图动画
21.3.1 理解视图动画
21.3.2 添加动画
21.3.3 使用Camera实现2D图像的深度效果
21.3.4 探索AnimationListener类
21.3.5 关于变换矩阵的一些说明
21.4 属性动画:新动画API
21.4.1 属性动画
21.4.2 计划一个属性动画的试验台
21.4.3 使用对象动画生成器创建基本视图动画
21.4.4 使用AnimatorSet实现顺序动画
21.4.5 用AnimatorSetBuilder设置动画关系
21.4.6 使用XML加载动画生成器
21.4.7 使用PropertyValuesHolder
21.4.8 视图属性动画
21.4.9 类型求值器
21.4.10 关键帧
21.4.11 布局转变
21.5 参考资料
21.6 小结
21.7 面试问题
第22章 地图和基于位置的服务
22.1 地图包
22.1.1 从谷歌获取map-api密钥
22.1.2 MapView和MapActivity
22.1.3 使用覆盖图添加标记
22.2 位置包
22.2.1 使用Android进行地理编码
22.2.2 使用后台线程进行地理编码
22.2.3 LocationManager服务
22.2.4 使用MyLocationOverlay显示位置
22.2.5 使用接近提醒
22.3 参考资料
22.4 小结
22.5 面试问题
第23章 电话API
23.1 使用SMS
23.1.1 发送SMS消息
23.1.2 监视传入的SMS消息
23.1.3 使用SMS文件夹
23.1.4 发送电子邮件
23.2 使用电话管理器
23.3 SIP
23.3.1 体验SipDemo
23.3.2 android.net.sip包
23.4 参考资料
23.5 小结
23.6 面试问题
第24章 媒体框架
24.1 使用媒体API
24.2 播放媒体
24.2.1 播放音频内容
24.2.2 播放视频内容
24.3 录制媒体
24.3.1 使用MediaRecorder录制音频
24.3.2 使用AudioRecord录制音频
24.3.3 视频录制
24.3.4 MediaStore类
24.3.5 使用Intnet录制音频
24.3.6 将媒体内容添加到媒体存储
24.3.7 为整个SD卡触发MediaScanner
24.4 参考资料
24.5 小结
24.6 面试问题
第25章 主屏幕部件
25.1 主屏幕部件的架构
25.1.1 什么是主屏幕部件
25.1.2 主屏幕部件的用户体验
25.1.3 部件的生命周期
25.2 示例部件应用程序
25.2.1 定义部件提供程序
25.2.2 定义部件尺寸
25.2.3 与部件布局相关的文件
25.2.4 实现部件提供程序
25.2.5 实现部件模型
25.2.6 实现部件配置活动
25.3 部件预览工具
25.4 部件局限性和扩展
25.5 基于容器的部件
25.6 资源
25.7 小结
25.8 面试问题
第26章 列表部件
26.1 远程视图概述
26.2 在远程视图中使用列表
26.2.1 准备远程布局
26.2.2 加载远程布局
26.2.3 创建RemoteViewsService
26.2.4 创建RemoteViewsFactory
26.2.5 创建onClick事件
26.2.6 响应onClick事件
26.3 工作样例:测试主屏幕列表部件
26.3.1 创建测试部件提供程序
26.3.2 创建远程视图工厂
26.3.3 编写远程视图服务的代码
26.3.4 部件主布局文件
26.3.5 部件提供程序元数据
26.3.6 AndroidManifest.xml
26.4 测试列表部件
26.5 参考资料
26.6 小结
26.7 面试问题
第27章 触摸屏
27.1 MotionEvent
27.1.1 MotionEvent对象
27.1.2 回收MotionEvent
27.1.3 使用VelocityTracker
27.2 多点触摸
27.3 触摸地图
27.4 手势
27.4.1 捏合手势
27.4.2 GestureDetector和OnGestureListener
27.4.3 自定义手势
27.4.4 Gestures Builder应用程序
27.5 参考资料
27.6 小结
27.7 面试问题
第28章 实现拖放操作
28.1 拖放操作简介
28.2 3.0及其以上版本的基本拖放操作
28.3 拖放操作示例应用程序
28.3.1 文件列表
28.3.2 示例拖放应用程序的布局
28.3.3 响应Dropzone的onDrag事件
28.3.4 创建拖动源视图
28.4 测试示例拖放应用程序
28.5 参考资料
28.6 小结
28.7 面试问题
第29章 传感器
29.1 什么是传感器
29.1.1 检测传感器
29.1.2 可以了解的传感器信息
29.2 获取传感器事件
29.3 解释传感器数据
29.3.1 光线传感器
29.3.2 接近传感器
29.3.3 温度传感器
29.3.4 压力传感器
29.3.5 陀螺仪传感器
29.3.6 加速度计
29.3.7 磁场传感器
29.3.8 结合使用加速度计和磁场传感器
29.3.9 方向传感器
29.3.10 磁偏角和Geomagnetic-Field
29.3.11 重力传感器
29.3.12 直线加速度传感器
29.3.13 旋转矢量传感器
29.3.14 近场通信传感器
29.4 参考资料
29.5 小结
29.6 面试问题
第30章 联系人API
30.1 账户
30.1.1 账户屏幕概览
30.1.2 账户与联系人的相关性
30.1.3 枚举账户
30.2 联系人应用程序
30.2.1 个人账号简介
30.2.2 显示联系人
30.2.3 显示联系人详细信息
30.2.4 编辑联系人详细信息
30.2.5 设置联系人的照片
30.2.6 导出联系人
30.2.7 各种联系人数据类型
30.3 联系人
30.3.1 联系人SQLite数据库
30.3.2 原始联系人
30.3.3 数据表
30.3.4 聚合联系人
30.3.5 view_contacts
30.3.6 contact_entities_view
30.4 联系人API
30.4.1 浏览账户
30.4.2 浏览聚合联系人
30.4.3 浏览原始联系人
30.4.4 浏览原始联系人数据
30.4.5 添加联系人和它的详细信息
30.5 控制聚合
30.6 同步的影响
30.7 个人账号
30.7.1 读取账号原始联系人
30.7.2 读取账号联系人数据
30.7.3 添加数据到个人账号
30.8 参考资料
30.9 小结
30.10 面试问题
第31章 部署应用程序Android Market
31.1 成为发布者
31.1.1 遵守规则
31.1.2 开发人员控制台
31.2 准备销售应用程序
31.2.1 针对不同设备进行测试
31.2.2 支持不同的屏幕尺寸
31.2.3 准备上传AndroidManifest.xml
31.2.4 本地化应用程序
31.2.5 准备应用程序图标
31.2.6 付费应用程序需要考虑的因素
31.2.7 将用户引导至Market
31.2.8 Android授权服务
31.2.9 使用ProGuard来优化及对抗盗版行为
31.2.10 准备上传.apk文件
31.3 上传应用程序
31.3.1 图表
31.3.2 列出详细信息
31.3.3 发布选项
31.3.4 联系信息
31.3.5 需遵守的规定
31.4 Android Market上的用户体验
31.5 更多发布途径
31.6 参考资料
31.7 小结
31.8 面试问题
《Android软件安全与逆向分析》
第1章 Android程序分析环境搭建
1.1 Windows分析环境搭建
1.1.1 安装JDK
1.1.2 安装Android SDK
1.1.3 安装Android NDK
1.1.4 Eclipse集成开发环境
1.1.5 安装CDT、ADT插件
1.1.6 创建Android Virtual Device
1.1.7 使用到的工具
1.2 Linux分析环境搭建
1.2.1 本书的Linux环境
1.2.2 安装JDK
1.2.3 在Ubuntu上安装Android SDK
1.2.4 在Ubuntu上安装Android NDK
1.2.5 在Ubuntu上安装Eclipse集成开发环境
1.2.6 在Ubuntu上安装CDT、ADT插件
1.2.7 创建Android Virtual Device
1.2.8 使用到的工具
1.3 本章小结
第2章 如何分析Android程序
2.1 编写第一个Android程序
2.1.1 使用Eclipse创建Android工程
2.1.2 编译生成APK文件
2.2 破解第一个程序
2.2.1 如何动手?
2.2.2 反编译APK文件
2.2.3 分析APK文件
2.2.4 修改Smali文件代码
2.2.5 重新编译APK文件并签名
2.2.6 安装测试
2.3 本章小结
第3章 进入Android Dalvik虚拟机
3.1 Dalvik虚拟机的特点——掌握Android程序的运行原理
3.1.1 Dalvik虚拟机概述
3.1.2 Dalvik虚拟机与Java虚拟机的区别
3.1.3 Dalvik虚拟机是如何执行程序的
3.1.4 关于Dalvik虚拟机JIT(即时编译)
3.2 Dalvik汇编语言基础为分析Android程序做准备
3.2.1 Dalvik指令格式
3.2.2 DEX文件反汇编工具
3.2.3 了解Dalvik寄存器
3.2.4 两种不同的寄存器表示方法——v命名法与p命名法
3.2.5 Dalvik字节码的类型、方法与字段表示方法
3.3 Dalvik指令集
3.3.1 指令特点
3.3.2 空操作指令
3.3.3 数据操作指令
3.3.4 返回指令
3.3.5 数据定义指令
3.3.6 锁指令
3.3.7 实例操作指令
3.3.8 数组操作指令
3.3.9 异常指令
3.3.10 跳转指令
3.3.11 比较指令
3.3.12 字段操作指令
3.3.13 方法调用指令
3.3.14 数据转换指令
3.3.15 数据运算指令
3.4 Dalvik指令集练习——写一个Dalvik版的Hello World
3.4.1 编写smali文件
3.4.2 编译smali文件
3.4.3 测试运行
3.5 本章小结
第4章 Android可执行文件
4.1 Android程序的生成步骤
4.2 Android程序的安装流程
4.3 dex文件格式
4.3.1 dex文件中的数据结构
4.3.2 dex文件整体结构
4.3.3 dex文件结构分析
4.4 odex文件格式
4.4.1 如何生成odex文件
4.4.2 odex文件整体结构
4.4.3 odex文件结构分析
4.5 dex文件的验证与优化工具dexopt的工作过程
4.6 Android应用程序另类破解方法
4.7 本章小结
第5章 静态分析Android程序
5.1 什么是静态分析
5.2 快速定位Android程序的关键代码
5.2.1 反编译apk程序
5.2.2 程序的主Activity
5.2.3 需重点关注的Application类
5.2.4 如何定位关键代码——六种方法
5.3 smali文件格式
5.4 Android程序中的类
5.4.1 内部类
5.4.2 监听器
5.4.3 注解类
5.4.4 自动生成的类
5.5 阅读反编译的smali代码
5.5.1 循环语句
5.5.2 switch分支语句
5.5.3 try/catch语句
5.6 使用IDA Pro静态分析Android程序
5.6.1 IDA Pro对Android的支持
5.6.2 如何操作
5.6.3 定位关键代码——使用IDA Pro进行破解的实例
5.7 恶意软件分析工具包——Androguard
5.7.1 Androguard的安装与配置
5.7.2 Androguard的使用方法
5.7.3 使用Androguard配合Gephi进行静态分析
5.7.4 使用androlyze.py进行静态分析
5.8 其他静态分析工具
5.9 阅读反编译的Java代码
5.9.1 使用dex2jar生成jar文件
5.9.2 使用jd-gui查看jar文件的源码
5.10 集成分析环境——santoku
5.11 本章小结
第6章 基于Android的ARM汇编语言基础——逆向原生!
6.1 Android与ARM处理器
6.1.1 ARM处理器架构概述
6.1.2 ARM处理器家族
6.1.3 Android支持的处理器架构
6.2 原生程序与ARM汇编语言——逆向你的原生Hello ARM
6.2.1 原生程序逆向初步
6.2.2 原生程序的生成过程
6.2.3 必须了解的ARM知识
6.3 ARM汇编语言程序结构
6.3.1 完整的ARM汇编程序
6.3.2 处理器架构定义
6.3.3 段定义
6.3.4 注释与标号
6.3.5 汇编器指令
6.3.6 子程序与参数传递
6.4 ARM处理器寻址方式
6.4.1 立即寻址
6.4.2 寄存器寻址
6.4.3 寄存器移位寻址
6.4.4 寄存器间接寻址
6.4.5 基址寻址
6.4.6 多寄存器寻址
6.4.7 堆栈寻址
6.4.8 块拷贝寻址
6.4.9 相对寻址
6.5 ARM与Thumb指令集
6.5.1 指令格式
6.5.2 跳转指令
6.5.3 存储器访问指令
6.5.4 数据处理指令
6.5.5 其他指令
6.6 用于多媒体编程与浮点计算的NEON与VFP指令集
6.7 本章小结
第7章 Android NDK程序逆向分析
7.1 Android中的原生程序
7.1.1 编写一个例子程序
7.1.2 如何编译原生程序
7.2 原生程序的启动流程分析
7.2.1 原生程序的入口函数
7.2.2 main函数究竟何时被执行
7.3 原生文件格式
7.4 原生C程序逆向分析
7.4.1 原生程序的分析方法
7.4.2 for循环语句反汇编代码的特点
7.4.3 if...else分支语句反汇编代码的特点
7.4.4 while循环语句反汇编代码的特点
7.4.5 switch分支语句反汇编代码的特点
7.4.6 原生程序的编译时优化
7.5 原生C++程序逆向分析
7.5.1 C++类的逆向
7.5.2 Android NDK对C++特性的支持
7.5.3 静态链接STL与动态链接STL的代码区别
7.6 Android NDK JNI API逆向分析
7.6.1 Android NDK提供了哪些函数
7.6.2 如何静态分析Android NDK程序
7.7 本章小结
第8章 动态调试Android程序
8.1 Android动态调试支持
8.2 DDMS的使用
8.2.1 如何启动DDMS
8.2.2 使用LogCat查看调试信息
8.3 定位关键代码
8.3.1 代码注入法——让程序自己吐出注册码
8.3.2 栈跟踪法
8.3.3 Method Profiling
8.4 使用AndBug调试Android程序
8.4.1 安装AndBug
8.4.2 使用AndBug
8.5 使用IDA Pro调试Android原生程序
8.5.1 调试Android原生程序
8.5.2 调试Android原生动态链接库
8.6 使用gdb调试Android原生程序
8.6.1 编译gdb与gdbserver
8.6.2 如何调试
8.7 本章小结
第9章 Android软件的破解技术
9.1 试用版软件
9.1.1 试用版软件的种类
9.1.2 实例破解——针对授权KEY方式的破解
9.2 序列号保护
9.3 网络验证
9.3.1 网络验证保护思路
9.3.2 实例破解——针对网络验证方式的破解
9.4 In-app Billing(应用内付费)
9.4.1 In-app Billing原理
9.4.2 In-app Billing破解方法
9.5 Google Play License保护
9.5.1 Google Play License保护机制
9.5.2 实例破解——针对Google Play License方式的破解
9.6 重启验证
9.6.1 重启验证保护思路
9.6.2 实例破解——针对重启验证方式的破解
9.7 如何破解其他类型的Android程序
9.7.1 Mono for Android开发的程序及其破解方法
9.7.2 Qt for Android开发的程序及其破解方法
9.8 本章小结
第10章 Android程序的反破解技术
10.1 对抗反编译
10.1.1 如何对抗反编译工具
10.1.2 对抗dex2jar
10.2 对抗静态分析
10.2.1 代码混淆技术
10.2.2 NDK保护
10.2.3 外壳保护
10.3 对抗动态调试
10.3.1 检测调试器
10.3.2 检测模拟器
10.4 防止重编译
10.4.1 检查签名
10.4.2 校验保护
10.5 本章小结
第11章 Android系统攻击与防范
11.1 Android系统安全概述
11.2 手机ROOT带来的危害
11.2.1 为什么要ROOT手机
11.2.2 手机ROOT后带来的安全隐患
11.2.3 Android手机ROOT原理
11.3 Android权限攻击
11.3.1 Android权限检查机制
11.3.2 串谋权限攻击
11.3.3 权限攻击检测
11.4 Android组件安全
11.4.1 Activity安全及Activity劫持演示
11.4.2 Broadcast Receiver 安全
11.4.3 Service安全
11.4.4 Content Provider安全
11.5 数据安全
11.5.1 外部存储安全
11.5.2 内部存储安全
11.5.3 数据通信安全
11.6 ROM安全
11.6.1 ROM的种类
11.6.2 ROM的定制过程
11.6.3 定制ROM的安全隐患
11.6.4 如何防范
11.7 本章小结
第12章 DroidKongFu变种病毒实例分析
12.1 DroidKongFu病毒介绍
12.2 配置病毒分析环境
12.3 病毒执行状态分析
12.3.1 使用APIMonitor初步分析
12.3.2 使用DroidBox动态分析
12.3.3 其他动态分析工具
12.4 病毒代码逆向分析
12.4.1 Java层启动代码分析
12.4.2 Native层启动代码分析
12.4.3 Native层病毒核心分析
12.5 DroidKongFu病毒框架总结
12.6 病毒防治
12.7 本章小结
……
《疯狂Android讲义(第2版)》
第1章 Android应用与开发环境
1.1 Android的发展和历史
1.1.1 Android的发展和简介
1.1.2 Android平台架构及特性
1.2 搭建Android开发环境
1.2.1 下载和安装Android SDK
1.2.2 安装运行、调试环境
1.2.3 安装Eclipse和ADT插件
1.3 Android常用开发工具的用法
1.3.1 在命令行创建、删除和浏览AVD
1.3.2 使用Android模拟器(Emulator)
1.3.3 使用DDMS进行调试
1.3.4 Android Debug Bridge(ADB)的用法
1.3.5 使用DX编译Android应用
1.3.6 使用Android Asset Packaging Tool(AAPT)打包资源
1.3.7 使用mksdcard管理虚拟SD卡
1.4 开始第一个Android应用
1.4.1 使用Eclipse开发第一个Android应用
1.4.2 通过ADT运行Android应用
1.5 Android应用结构分析
1.5.1 创建一个Android应用
1.5.2 自动生成的R.java
1.5.3 res目录说明
1.5.4 Android应用的清单文件:AndroidManifest.xml
1.5.5 应用程序权限说明
1.6 Android应用的基本组件介绍
1.6.1 Activity和View
1.6.2 Service
1.6.3 BroadcastReceiver
1.6.4 ContentProvider
1.6.5 Intent和IntentFilter
1.7 签名Android应用程序
1.7.1 在Eclipse中对Android应用签名
1.7.2 使用命令对APK包签名
1.8 本章小结
第2章 Android应用的界面编程
2.1 界面编程与视图(View)组件
2.1.1 视图组件与容器组件
2.1.2 使用XML布局文件控制UI界面
2.1.3 在代码中控制UI界面
2.1.4 使用XML布局文件和Java代码混合控制UI界面
2.1.5 开发自定义View
2.2 第1组UI组件:布局管理器
2.2.1 线性布局
2.2.2 表格布局
2.2.3 帧布局
2.2.4 相对布局
2.2.5 Android 4.0新增的网格布局
2.2.6 绝对布局
2.3 第2组UI组件:TextView及其子类
2.3.1 文本框(TextView)与编辑框(EditText)的功能和用法
2.3.2 EditText的功能与用法
2.3.3 按钮(Button)组件的功能和用法
2.3.4 使用9Patch图片作为按钮背景
2.3.5 单选按钮(RadioButton)与复选框(CheckBox)的功能与用法
2.3.6 状态开关按钮(ToggleButton)与开关(Switch)的功能与用法
2.3.7 时钟(AnalogClock和DigitalClock)的功能与用法
2.3.8 计时器(Chronometer)
2.4 第3组UI组件:ImageView及其子类
2.5 第4组UI组件:AdapterView及子类
2.5.1 列表视图(ListView)和ListActivity
2.5.2 Adapter接口及实现类
2.5.3 自动完成文本框(AutoCompleteTextView)的功能和用法
2.5.4 网格视图(GridView)功能和用法
2.5.5 可展开的列表组件(ExpandableListView)
2.5.6 Spinner的功能和用法
2.5.7 画廊视图(Gallery)的功能和用法
2.5.8 AdapterViewFlipper的功能与用法
2.5.9 StackView的功能与用法
2.6 第5组UI组件:ProgressBar及其子类
2.6.1 进度条(ProgressBar)的功能与用法
2.6.2 拖动条(SeekBar)的功能和用法
2.6.3 星级评分条(RatingBar)的功能和用法
2.7 第6组UI组件:ViewAnimator及其子类
2.7.1 ViewSwitcher的功能与用法
2.7.2 图像切换器(ImageSwitcher)的功能与用法
2.7.3 文本切换器(TextSwitcher)的功能与用法
2.7.4 ViewFlipper的功能与用法
2.8 各种杂项组件
2.8.1 使用Toast显示提示信息框
2.8.2 日历视图(CalendarView)组件的功能和用法
2.8.3 日期、时间选择器(DatePicker和TimePicker)的功能和用法
2.8.4 数值选择器(NumberPicker)的功能与用法
2.8.5 搜索框(SearchView)的功能与用法
2.8.6 选项卡(TabHost)的功能和用法
2.8.7 滚动视图(ScrollView)的功能和用法
2.8.8 Notification的功能与用法
2.9 对话框
2.9.1 使用AlertDialog创建对话框
2.9.2 对话框风格的窗口
2.9.3 使用PopupWindow
2.9.4 使用DatePickerDialog、TimePickerDialog
2.9.5 使用ProgressDialog创建进度对话框
2.10 菜单
2.10.1 选项菜单和子菜单(SubMenu)
2.10.2 使用监听器来监听菜单事件
2.10.3 创建复选菜单项和单选菜单项
2.10.4 设置与菜单项关联的Activity
2.10.5 上下文菜单
2.10.6 使用XML文件定义菜单
2.10.7 使用PopupMenu创建弹出式菜单
2.11 使用活动条(ActionBar)
2.11.1 启用ActionBar
2.11.2 使用ActionBar显示选项菜单
2.11.3 启用程序图标导航
2.11.4 添加Action View
2.11.5 使用ActionBar实现Tab导航
2.11.6 使用ActionBar实现下拉式导航
2.12 本章小结
第3章 Android的事件处理
3.1 Android事件处理概述
3.2 基于监听的事件处理
3.2.1 监听的处理模型
3.2.2 事件和事件监听器
3.2.3 内部类作为事件监听器类
3.2.4 外部类作为事件监听器类
3.2.5 Activity本身作为事件监听器
3.2.6 匿名内部类作为事件监听器类
3.2.7 直接绑定到标签
3.3 基于回调的事件处理
3.3.1 回调机制与监听机制
3.3.2 基于回调的事件传播
3.3.3 重写onTouchEvent方法响应触摸屏事件
3.4 响应的系统设置的事件
3.4.1 Configuration类简介
3.4.2 重写onConfigurationChanged响应系统设置更改
3.5 Handler消息传递机制
3.5.1 Handler类简介
3.5.2 Handler、Loop、MessageQueue的工作原理
3.6 异步任务(AsyncTask)
3.7 本章小结
第4章 深入理解Activity与Fragment
4.1 建立、配置和使用Activity
4.1.1 Activity
4.1.2 配置Activity
4.1.3 启动、关闭Activity
4.1.4 使用Bundle在Activity之间交换数据
4.1.5 启动其他Activity并返回结果
4.2 Activity的回调机制
4.3 Activity的生命周期与加载模式
4.3.1 Activity的生命周期演示
4.3.2 Activity与Servlet的相似性与区别
4.3.3 Activity的4种加载模式
4.4 Fragment详解
4.4.1 Fragment概述及其设计哲学
4.4.2 创建Fragment
4.4.3 Fragment与Activity通信
4.4.4 Fragment管理与Fragment事务
4.5 Fragment的生命周期
4.6 本章小结
第5章 使用Intent和IntentFilter进行通信
5.1 Intent对象详解
5.1.1 使用Intent启动系统组件
5.2 Intent的属性及intent-filter配置
5.2.1 Component属性
5.2.2 Action、Category属性与intent-filter配置
5.2.3 指定Action、Category调用系统Activity
5.2.4 Data、Type属性与intent-filter配置
5.2.5 Extra属性
5.2.6 Flag属性
5.3 使用Intent创建Tab页面
5.4 本章小结
第6章 Android应用的资源
6.1 资源的类型及存储方式
6.1.1 资源的类型以及存储方式
6.1.2 使用资源
6.2 使用字符串、颜色、尺寸资源
6.2.1 颜色值的定义
6.2.2 定义字符串、颜色、尺寸资源文件
6.2.3 使用字符串、颜色、尺寸资源
6.3 数组(Array)资源
6.4 使用(Drawable)资源
6.4.1 图片资源
6.4.2 StateListDrawable资源
6.4.3 LayerDrawable资源
6.4.4 ShapeDrawable资源
6.4.5 ClipDrawable资源
6.4.6 AnimationDrawable资源
6.5 属性动画(Property Animation)资源
6.6 使用原始XML资源
6.6.1 定义原始XML资源
6.6.2 使用原始XML文件
6.7 使用布局(Layout)资源
6.8 使用菜单(Menu)资源
6.9 样式(Style)和主题(Theme)资源
6.9.1 样式资源
6.9.2 主题资源
6.10 属性(Attribute)资源
6.11 使用原始资源
6.12 国际化和资源自适应
6.12.1 Java国际化的思路
6.12.2 Java支持的语言和国家
6.12.3 完成程序国际化
6.12.4 为Android应用提供国际化资源
6.12.5 国际化Android应用
6.13 自适应不同屏幕的资源
6.14 本章小结
第7章 图形与图像处理
7.1 使用简单图片
7.1.1 使用Drawable对象
7.1.2 Bitmap和BitmapFactory
7.2 绘图
7.2.1 Android绘图基础:Canvas、Paint等
7.2.2 Path类
7.2.3 绘制游戏动画
7.3 图形特效处理
7.3.1 使用Matrix控制变换
7.3.2 使用drawBitmapMesh扭曲图像
7.3.3 使用Shader填充图形
7.4 逐帧(Frame)动画
7.4.1 AnimationDrawable与逐帧动画
7.5 补间(Tween)动画
7.5.1 Tween动画与Interpolator
7.5.2 位置、大小、旋转度、透明度改变的补间动画
7.5.3 自定义补间动画
7.6 属性动画
7.6.1 属性动画的API
7.6.2 使用属性动画
7.7 使用SurfaceView实现动画
7.7.1 SurfaceView的绘图机制
7.8 本章小结
第8章 Android数据存储与IO
8.1 使用SharedPreferences
8.1.1 SharedPreferences与Editor简介
8.1.2 SharedPreferences的存储位置和格式
8.1.3 读、写其他应用SharedPreferences
8.2 File存储
8.2.1 openFileOutput和openFileInput
8.2.2 读写SD卡上的文件
8.3 SQLite数据库
8.3.1 SQLiteDatabase简介
8.3.2 创建数据库和表
8.3.3 使用SQL语句操作SQLite数据库
8.3.4 使用sqlite3工具
8.3.5 使用特定方法操作SQLite数据库
8.3.6 事务
8.3.7 SQLiteOpenHelper类
8.4 手势(Gesture)
8.4.1 手势检测
8.4.2 增加手势
8.4.3 识别用户的手势
8.5 自动朗读(TTS)
8.6 本章小结
第9章 使用ContentProvider实现数据共享
9.1 数据共享标准:ContentProvider简介
9.1.1 ContentProvider简介
9.1.2 Uri简介
9.1.3 使用ContentResolver操作数据
9.2 开发ContentProvider
9.2.1 ContentProvider与ContentResolver的关系
9.2.2 开发ContentProvider
9.2.3 配置ContentProvider
9.2.4 使用ContentResolver调用方法
9.2.5 创建ContentProvider的说明
9.3 操作系统的ContentProvider
9.3.1 使用ContentProvider管理联系人
9.3.2 使用ContentProvider管理多媒体内容
9.4 监听ContentProvider的数据改变
9.4.1 ContentObserver简介
9.5 本章小结
第10章 Service与BroadcastReceiver
10.1 Service简介
10.1.1 创建、配置Service
10.1.2 启动和停止Service
10.1.3 绑定本地Service并与之通信
10.1.4 Service的生命周期
10.1.5 使用IntentService
10.2 跨进程调用Service(AIDL Service)
10.2.1 AIDL Service简介
10.2.2 创建AIDL文件
10.2.3 将接口暴露给客户端
10.2.4 客户端访问AIDLService
10.3 电话管理器(TelephonyManager)
10.4 短信管理器(SmsManager)
10.5 音频管理器(AudioManager)
10.5.1 AudioManager简介
10.6 振动器(Vibrator)
10.6.1 Vibrator简介
10.6.2 使用Vibrator控制手机振动
10.7 手机闹钟服务(AlarmManager)
10.7.1 AlarmManager简介
10.7.2 设置闹钟
10.8 接收广播消息
10.8.1 BroadcastReceiver简介
10.8.2 发送广播
10.8.3 有序广播
10.9 接收系统广播消息
10.10 本章小结
第11章 多媒体应用开发
11.1 音频和视频的播放
11.1.1 使用MediaPlayer播放音频
11.1.2 音乐特效控制
11.1.3 使用SoundPool播放音效
11.1.4 使用VideoView播放视频
11.1.5 使用MediaPlayer和SurfaceView播放视频
11.2 使用MediaRecorder录制音频
11.3 控制摄像头拍照
11.3.1 通过Camera进行拍照
11.3.2 录制视频短片
11.4 本章小结
第12章 OpenGL与3D应用开发
12.1 3D图像与3D开发的基本知识
12.2 OpenGL和OpenGL ES简介
12.3 绘制2D图形
12.3.1 在Android应用中使用OpenGL ES
12.3.2 绘制平面上的多边形
12.3.3 旋转
12.4 绘制3D图形
12.4.1 构建3D图形
12.4.2 应用纹理贴图
12.5 本章小结
第13章 Android网络应用
13.1 基于TCP协议的网络通信
13.1.1 TCP协议基础
13.1.2 使用ServerSocket创建TCP服务器端
13.1.3 使用Socket进行通信
13.1.4 加入多线程
13.2 使用URL访问网络资源
13.2.1 使用URL读取网络资源
13.2.2 使用URLConnection提交请求
13.3 使用HTTP访问网络
13.3.1 使用HttpURLConnection 6
13.3.2 使用Apache HttpClient
13.4 使用WebView视图显示网页
13.4.1 使用WebView浏览网页
13.4.2 使用WebView加载HTML代码
13.4.3 使用WebView中的JavaScript调用Android方法
13.5 使用Web Service进行网络编程
13.5.1 Web Service平台概述
13.5.2 使用Android应用调用Web Service
13.6 本章小结
第14章 管理Android手机桌面
14.1 管理手机桌面
14.1.1 删除桌面组件
14.1.2 添加桌面组件
14.2 改变手机壁纸
14.2.1 开发动态壁纸(Live Wallpapers)
14.3 通过程序添加快捷方式
14.4 管理桌面控件
14.4.1 开发桌面控件
14.4.2 Android 4.0新增的显示数据集的桌面控件
14.5 本章小结
第15章 传感器应用开发
15.1 利用Android的传感器
15.1.1 开发传感器应用
15.2 Android的常用传感器
15.2.1 方向传感器Orientation
15.2.2 磁场传感器Magnetic Field
15.2.3 温度传感器Temperature
15.2.4 光传感器Light
15.2.5 压力传感器Pressure
15.3 传感器应用案例
15.4 本章小结
第16章 GPS应用开发
16.1 支持GPS的核心API
16.2 获取LocationProvider
16.2.1 获取所有可用的LocationProvider
16.2.2 通过名称获得指定LocationProvider
16.2.3 根据Criteria获得LocationProvider
16.3 获取定位信息
16.3.1 通过模拟器发送GPS信息
16.3.2 获取定位数据
16.4 临近警告
16.5 本章小结
第17章 使用Google Map服务
17.1. 调用Google Map的准备
17.1.1 获取Map API Key
17.1.2 创建支持Google Map API的AVD
17.2 根据GPS信息在地图上定位
17.3 GPS导航
17.4 根据地址定位
17.4.1 地址解析与反向地址解析
17.4.2 根据地址定位
17.5 本章小结
第18章 疯狂连连看
18.1 连连看游戏简介
18.2 开发游戏界面
18.2.1 开发界面布局
18.2.2 开发游戏界面组件
18.2.3 处理方块之间的连接线
18.3 连连看的状态数据模型
18.3.1 定义数据模型
18.3.2 初始化游戏状态数据
18.4 加载界面的图片
18.5 实现游戏Activity
18.6 实现游戏逻辑
18.6.1 定义GameService组件接口
18.6.2 实现GameService组件
18.6.3 获取触碰点的方块
18.6.4 判断两个方块是否可以相连
18.6.5 定义获取通道的工具方法
18.6.6 没有转折点的横向连接
18.6.7 没有转折点的纵向连接
18.6.8 一个转折点的连接
18.6.9 两个转折点的连接
18.6.10 找出最短距离
18.7 本章小结
第19章 电子拍卖系统
19.1 系统功能简介和架构设计
19.1.1 系统功能简介
19.1.2 系统架构设计
19.2 JSON简介
19.2.1 使用JSON语法创建对象
19.2.2 使用JSON语法创建数组
19.2.3 Java的JSON支持
19.3 发送请求的工具类
19.4 用户登录
19.4.1 处理登录的Servlet
19.4.2 用户登录
19.5 查看流拍物品
19.5.1 查看流拍物品的Servlet
19.5.2 查看流拍物品
19.6 管理物品种类
19.6.1 浏览物品种类的Servlet
19.6.2 查看物品种类
19.6.3 添加种类的Servlet
19.6.4 添加物品种类
19.7 管理拍卖物品
19.7.1 查看自己的拍卖物品的Servlet
19.7.2 查看自己的拍卖物品
19.7.3 添加拍卖物品的Servlet
19.7.4 添加拍卖物品
19.8 参与竞拍
19.8.1 选择物品种类
19.8.2 根据种类浏览物品的Servlet
19.8.3 根据种类浏览物品
19.8.4 参与竞价的Servlet
19.8.5 参与竞价
19.9 权限控制
19.10 本章小结
目 录内容简介
《疯狂Android讲义(第2版)》
《疯狂Android讲义(第2版)》基于新的Android4。2,AndroidSDK、ADT都基于Android4。2,书中每个案例、每 个截图都全面升级到Android4。2。本书全面地介绍了Android应用开发的相关知识,全书内容覆盖了Android用户界面编程、 Android四大组件、Android资源访问、图形/图像处理、事件处理机制、Android输入/输出处理、音频/视频多媒体应用开发、 OpenGL与3D应用开发、网络通信编程、Android平台的WebService、传感器应用开发、GPS应用开发、GoogleMap服务等。
本书并不局限于介绍Android编程的各种理论知识,而是从“项目驱动”的角度来讲授理论。全书一共包括近百个实例,这些示范性的实例既可帮读者更好 地理解各知识点在实际开发中的应用,也可供读者在实际开发时作为参考、拿来就用。本书最后还提供了两个实用的案例:疯狂连连看和电子拍卖系统 Android客户端,具有极高的参考价值。
本书适合有一定Java编程基础的读者。如果读者已熟练掌握Java编程语法并具有一定图形界面编程经验,阅读本书将十分合适。否则,阅读本书之前建议先认真阅读疯狂Java体系之《疯狂Java讲义》。
《Android软件安全与逆向分析》
《Android软件安全与逆向分析》由浅入深、循序渐进地讲解了Android系统的软件安全、逆向分析与加密解密技术。包括Android软件逆 向分析和系统安全方面的必备知识及概念、如何静态分析Android软件、如何动态调试Android软件、Android软件的破解与反破解技术的探 讨,以及对典型Android病毒的全面剖析。
《Android软件安全与逆向分析》适合所有Android应用开发者、Android系统开发工程师、Android系统安全工作者阅读学习。
《精通Android》
Android是谷歌的开源移动开发平台,业已成为移动开发领域的主流。近几年,随着越来越多硬件供应商加入Android操作系统的阵营,谷歌已经成为移动领域的新霸主。
《精通Android》是智慧的结晶,是备受推崇的Android参考书。作为Android 4。0 SDK(Android的一个SDK)的编程指南,相较于上一版,《精通Android》不仅在结构上做了相应的调整,内容上更是与时俱进,增加了 Android内部构件编程的相关知识,介绍了线程、进程、长期运行的服务、广播接收程序、闹钟管理器、设备配置变化和异步任务。用31章涵盖了100多 个主题, 原书配套网站上更是展示了Android SDK的新特性。
《精通Android》强调实用,突出趣味,寓教于乐。作者通过妙趣横生、切实可行的示例,向读者展示了如何使用谷歌新的Android 4。0 SDK,为嵌入式设备、手机、平板电脑构建应用。如果你想投身Android移动开发,那么本书不容错过。
《疯狂Android讲义(第2版)》基于新的Android4。2,AndroidSDK、ADT都基于Android4。2,书中每个案例、每 个截图都全面升级到Android4。2。本书全面地介绍了Android应用开发的相关知识,全书内容覆盖了Android用户界面编程、 Android四大组件、Android资源访问、图形/图像处理、事件处理机制、Android输入/输出处理、音频/视频多媒体应用开发、 OpenGL与3D应用开发、网络通信编程、Android平台的WebService、传感器应用开发、GPS应用开发、GoogleMap服务等。
本书并不局限于介绍Android编程的各种理论知识,而是从“项目驱动”的角度来讲授理论。全书一共包括近百个实例,这些示范性的实例既可帮读者更好 地理解各知识点在实际开发中的应用,也可供读者在实际开发时作为参考、拿来就用。本书最后还提供了两个实用的案例:疯狂连连看和电子拍卖系统 Android客户端,具有极高的参考价值。
本书适合有一定Java编程基础的读者。如果读者已熟练掌握Java编程语法并具有一定图形界面编程经验,阅读本书将十分合适。否则,阅读本书之前建议先认真阅读疯狂Java体系之《疯狂Java讲义》。
《Android软件安全与逆向分析》
《Android软件安全与逆向分析》由浅入深、循序渐进地讲解了Android系统的软件安全、逆向分析与加密解密技术。包括Android软件逆 向分析和系统安全方面的必备知识及概念、如何静态分析Android软件、如何动态调试Android软件、Android软件的破解与反破解技术的探 讨,以及对典型Android病毒的全面剖析。
《Android软件安全与逆向分析》适合所有Android应用开发者、Android系统开发工程师、Android系统安全工作者阅读学习。
《精通Android》
Android是谷歌的开源移动开发平台,业已成为移动开发领域的主流。近几年,随着越来越多硬件供应商加入Android操作系统的阵营,谷歌已经成为移动领域的新霸主。
《精通Android》是智慧的结晶,是备受推崇的Android参考书。作为Android 4。0 SDK(Android的一个SDK)的编程指南,相较于上一版,《精通Android》不仅在结构上做了相应的调整,内容上更是与时俱进,增加了 Android内部构件编程的相关知识,介绍了线程、进程、长期运行的服务、广播接收程序、闹钟管理器、设备配置变化和异步任务。用31章涵盖了100多 个主题, 原书配套网站上更是展示了Android SDK的新特性。
《精通Android》强调实用,突出趣味,寓教于乐。作者通过妙趣横生、切实可行的示例,向读者展示了如何使用谷歌新的Android 4。0 SDK,为嵌入式设备、手机、平板电脑构建应用。如果你想投身Android移动开发,那么本书不容错过。
比价列表价格走势
商家 | 评价 (0) | 折扣 | 价格 |
暂无 | 京东缺货28天 | 4天前更新 |
1人想要
公众号、微信群
缺书网
微信公众号
微信公众号
扫码进群
实时获取购书优惠
实时获取购书优惠