[套装书]Android和PHP开发最佳实践+Android应用测试与调试实战

更多详情

内容简介: 《Android和PHP开发最佳实践》
本书是国内第一本同时讲述Android客户端开发和PHP服务端开发的经典著作。
本书以一个完整的微博应用项目实例为主线,由浅入深地讲解了Android客户端开发和PHP服务端开发的思路和技巧。从前期的产品设计、架构设计,到客户端和服务端的编码实现,再到性能测试和系统优化,以及最后的打包发布,完整地介绍了移动互联网应用开发的过程。同时,本书也介绍了Android系统中比较有特色的功能,比如Google地图、LBS功能、传感器、摄像头、多媒体以及语音功能的使用等。此外,本书还介绍了Android NDK的开发以及Android游戏开发的相关内容,包括OpenGL的使用、流行游戏引擎Cocos2d-x和Unity 3D。
本书适合于所有对Android和PHP技术有兴趣的读者。不管是客户端还是服务端的开发者,都可以从本书中获得不少有用的经验。另外,值得一提的是,全书绝大部分的实例代码均源自于真实项目,参考价值极高。
《Android应用测试与调试实战》
《android应用测试与调试实战》是android应用测试与调试领域最为系统、深入且极具实践指导意义的著作,由拥有近10年从业经验的资深软件开发工程师和调试技术专家撰写,旨在为广大程序员开发高质量的android应用提供全方位指导。它从android应用自动化测试工程师和开发工程师的需求出发,从测试和调试两个维度,针对采用java、html 5、c++&ndk三种android应用开发方式所需要的测试和调试技术、方法进行了细致而深入的讲解,为android应用的自动化测试和调试提供原理性的解决方案。
全书一共16章,分为两大部分:第一部分为自动化测试篇(第1~11章),详细讲解了进行android自动化测试需要掌握的各种技术、工具和方法,包括android自动化测试基础、android应用的白盒自动化测试和黑盒自动化测试的技术和原理、android服务组件和内容组件的测试、html 5应用和ndk应用的测试,以及android应用的兼容性测试和持续集成自动化测试;第二部分为调试技术篇(第12~16章),详细讲解了android应用调试所需要的各种工具的使用、操作日志的分析、内存日志的分析,以及多线程应用html 5 应用和ndk 应用的调试方法和技巧。

目录: 《Android和PHP开发最佳实践》
前言
第一篇  准 备 篇
第1章 学前必读 1
1.1 移动互联网时代的来临 1
1.2 为何选择android和php 2
1.3 如何学习android和php 3
1.3.1 如何学习android 3
1.3.2 如何学习php 4
1.3.3 同时学好android和php 4
1.4 小结 5
第2章 android开发准备 6
2.1 android背景知识 6
2.2 android系统框架 8
2.3 android应用框架 11
2.3.1 活动(activity) 12
2.3.2 消息(intent) 14
2.3.3 视图(view) 16
2.3.4 任务(task) 17
2.4 android系统四大组件 19
2.4.1 活动(activity) 20
. 2.4.2 服务(service) 21
2.4.3 广播接收器(broadcast receiver) 23
2.4.4 内容提供者(content provider) 24
2.5 android上下文 25
2.5.1 界面上下文(activity context) 25
2.5.2 应用上下文(application context) 27
2.6 android数据存储 28
2.6.1 应用配置(shared preferences) 28
2.6.2 本地文件(files) 29
2.6.3 数据库(sqlite) 30
2.7 android应用界面 31
2.7.1 控件属性 31
2.7.2 布局(layout) 33
2.7.3 事件(event) 37
2.7.4 菜单(menu) 39
2.7.5 主题(theme) 41
2.7.6 对话框(dialog) 42
2.8 android图形界面 43
2.8.1 画笔(paint) 43
2.8.2 画布(canvas) 44
2.8.3 基础几何图形 46
2.8.4 常见图形变换 47
2.9 android动画效果 50
2.9.1 逐帧动画(frame animation) 50
2.9.2 补间动画(tween animation) 51
2.10 android开发环境 52
2.10.1 开发环境的搭建 53
2.10.2 首个android项目 58
2.10.3 使用ddms调试工具 63
2.11 小结 64
第3章 php开发准备 65
3.1 php开发基础 65
3.1.1 php语言简介 65
3.1.2 php语法简介 66
3.1.3 php开发起步 68
3.1.4 php面向对象编程 75
3.1.5 php的会话 78
3.2 php开发环境 80
3.2.1 开发环境的搭建 80
3.2.2 安装配置xampp 81
3.2.3 管理apache 83
3.2.4 管理mysql 84
3.3 使用json通信 87
3.4 常用php开发框架 88
3.5 认识smarty模板引擎 90
3.6 开发框架简介 93
3.6.1 框架的特点和优势 94
3.6.2 框架的基础目录结构 94
3.6.3 框架mvc思路讲解 97
3.6.4 框架mvc实例分析 99
3.7 小结 108
第二篇 实 战 篇
第4章 实例产品设计 109
4.1 为何选择微博 109
4.2 开发前的准备 110
4.2.1 选择开发模式 110
4.2.2 了解项目策划 111
4.2.3 了解原型设计 112
4.3 功能模块设计 112
4.4 应用界面设计 114
4.5 应用架构设计 115
4.6 通信协议定义 116
4.7 数据库结构设计 118
4.8 小结 120
第5章 程序架构设计 121
5.1 服务端程序架构设计 121
5.1.1 基础框架设计 122
5.1.2 调试框架设计 127
5.1.3 核心类库设计 130
5.1.4 服务端的mvc与soa 136
5.2 客户端程序架构设计 136
5.2.1 基础框架设计 137
5.2.2 核心类包设计 138
5.2.3 android应用的mvc 142
5.3 客户端界面架构设计 142
5.3.1 界面框架设计 143
5.3.2 主要界面设计 144
5.4 小结 146
第6章 服务端开发 147
6.1 开发入门 147
6.1.1 接口程序开发 147
6.1.2 调试框架开发 151
6.1.3 生成接口文档 155
6.2 验证接口 156
6.2.1 用户登录接口 156
6.2.2 用户登出接口 160
6.3 用户接口 162
6.3.1 新建用户接口 162
6.3.2 更新用户信息接口 164
6.3.3 查看用户信息接口 165
6.3.4 添加粉丝接口 167
6.3.5 删除粉丝接口 171
6.4 微博接口 172
6.4.1 发表微博接口 172
6.4.2 查看微博接口 174
6.4.3 微博列表接口 176
6.5 评论接口 180
6.5.1 发表评论接口 180
6.5.2 评论列表接口 182
6.6 图片接口 184
6.6.1 用户头像接口 185
6.6.2 头像列表接口 188
6.7 通知接口 189
6.8 web版接口 192
6.8.1 web版ui界面(jquery mobile) 193
6.8.2 web版地图接口 195
6.9 小结 196
第7章 客户端开发 198
7.1 开发入门 198
7.1.1 开发思路梳理 198
7.1.2 掌握应用配置文件 200
7.1.3 常规程序开发与调试 211
7.2 界面布局和行为控制 221
7.2.1 使用layout布局 221
7.2.2 使用merge整合界面 224
7.2.3 使用event控制用户行为 226
7.2.4 使用intent控制界面切换 228
7.3 网络通信模块 231
7.3.1 使用httpclient进行网络通信 231
7.3.2 支持cmwap网络接入方式 237
7.3.3 使用json库为消息解码 240
7.3.4 使用toast消息提示 245
7.4 异步任务模块 247
7.4.1 进程和线程 247
7.4.2 任务创建thread 249
7.4.3 任务处理handler 255
7.4.4 使用异步任务asynctask 257
7.5 全局功能模块 259
7.5.1 全局ui基类 259
7.5.2 全局menu菜单 264
7.5.3 全局dialog窗口 265
7.5.4 使用service获取通知 266
7.5.5 使用notification显示通知 270
7.6 用户登录界面 273
7.6.1 界面程序逻辑 273
7.6.2 使用textview 273
7.6.3 使用edittext 274
7.6.4 使用button 276
7.6.5 使用shape和selector 277
7.6.6 使用checkbox 279
7.6.7 使用sharedpreference 280
7.7 微博列表界面 281
7.7.1 界面程序逻辑 281
7.7.2 使用listview 286
7.7.3 使用imageview 290
7.7.4 使用draw9patch 292
7.7.5 异步获取远程图片 294
7.7.6 使用sdcard缓存图片 297
7.7.7 使用sqlite缓存数据 300
7.8 我的微博列表 303
7.8.1 界面程序逻辑 303
7.8.2 使用scrollview 309
7.8.3 使用自定义微博列表 310
7.9 微博文章界面 313
7.9.1 界面程序逻辑 313
7.9.2 界面布局进阶(综合使用ui控件) 319
7.9.3 发表评论功能实现 322
7.9.4 发表微博功能实现 326
7.10 用户配置界面 328
7.10.1 界面程序逻辑 328
7.10.2 使用自定义选项列表 333
7.10.3 修改签名功能实现 334
7.10.4 更换头像功能实现 334
7.11 网页界面开发 340
7.11.1 界面程序逻辑 340
7.11.2 使用webview 341
7.11.3 使用progressdialog 343
7.11.4 使用webview的重写和回调 346
7.11.5 网页地图实例分析 348
7.12 小结 349
第三篇 优 化 篇
第8章 性能分析 351
8.1 关于性能测试 351
8.1.1 服务端压力测试 352
8.1.2 客户端性能测试 359
8.2 瓶颈 364
8.2.1 服务端瓶颈分析 365
8.2.2 客户端瓶颈分析 366
8.3 优化的思路 366
8.4 小结 367
第9章  服务端优化 368
9.1 优化php程序 368
9.1.1 优化php代码 368
9.1.2 优化session机制 371
9.1.3 使用缓存中间件 373
9.1.4 使用apc加速 376
9.2 优化数据传输 377
9.2.1 优化json协议 377
9.2.2 使用gzip压缩 379
9.3 其他优化 380
9.3.1 服务器优化 380
9.3.2 数据库优化 383
9.3.3 网络优化 386
9.4 小结 386
第10章 客户端优化 387
10.1 优化android程序 387
10.1.1 优化java代码 387
10.1.2 异步获取数据 391
10.1.3 文件资源缓存 391
10.1.4 数据库缓存 392
10.2 避免内存泄露 392
10.2.1 android内存管理 392
10.2.2 如何判断内存泄露 393
10.2.3 常见内存泄露的处理 395
10.3 优化android ui 396
10.3.1 模板代码优化 396
10.3.2 关于布局优化 397
10.3.3 使用hierarchy viewer工具 402
10.4 其他优化 403
10.4.1 优化图片 403
10.4.2 优化apk包 403
10.4.3 使用keytool和jarsigner签名 404
10.4.4 使用zipalign优化 407
10.5 小结 408
第四篇 进 阶 篇
第11章 android特色功能开发 409
11.1 使用google map api 409
11.2 使用lbs功能 414
11.3 使用传感器 419
11.4 使用摄像头 422
11.5 多媒体开发 431
11.6 语音识别 439
11.7 小结 441
第12章 android ndk开发 442
12.1 ndk开发基础 442
12.1.1 使用ndk的原因 442
12.1.2 使用ndk调用c或c++ 443
12.1.3 android.mk和application.mk 445
12.2 ndk开发入门 448
12.2.1 开发环境搭建 448
12.2.2 首个ndk项目 449
12.3 小结 456
第13章 android游戏开发 457
13.1 手游开发基础 457
13.1.1 手游开发思路解析 457
13.1.2 贪食蛇和飞船游戏实例 462
13.1.3 认识android游戏引擎 464
13.1.4 使用opengl和opengl es 466
13.1.5 使用renderscript 472
13.2 手游开发进阶 474
13.2.1 认识cocos2d-x 475
13.2.2 架设cocos2d-x开发环境 475
13.2.3 首个cocos2d-x项目 475
13.2.4 认识unity 3d 487
13.3 小结 489
附录a hush framework框架实例源码部署 490
附录b 微博应用实例源码部署 495
《android应用测试与调试实战》
前言
第1章android自动化测试初探 1
1.1 快速入门 1
1.2 待测示例程序 2
1.3 第一个android应用测试工程 6
1.4 搭建自动化开发环境 12
1.4.1 安装eclipse和adt开发包 12
1.4.2 创建模拟器 13
1.4.3 启动模拟器 21
1.4.4 连接模拟器 23
1.4.5 连接手机 24
1.5 本章小结 29
第2章 android自动化测试基础 30
2.1 java编程基础 30
2.2 junit简介 36
2.2.1 添加测试异常情况的测试用例 41
2.2.2 测试集合 43
2.2.3 测试准备与扫尾函数 45
2.2.4 自动化测试用例编写注意事项 47
.2.3 android应用程序基础 47
2.3.1 android权限系统 47
2.3.2 应用的组成与激活 51
2.3.3 清单文件 54
2.3.4 android应用程序的单ui线程模型 56
2.4 本章小结 57
第3章 android界面自动化白盒测试 58
3.1 instrumentation测试框架 58
3.1.1 android仪表盘测试工程 58
3.1.2 仪表盘技术 60
3.1.3 instrumentation.activitymonitor嵌套类 63
3.2 使用仪表盘技术编写测试用例 64
3.2.1 activityinstrumentationtest-case2测试用例 66
3.2.2 sendkeys和sendrepeatedkeys函数 70
3.2.3 执行仪表盘测试用例 72
3.2.4 仪表盘测试技术的限制 74
3.3 使用robotium编写集成测试用例 77
3.3.1 为待测程序添加?robotium用例 77
3.3.2 测试第三方应用 80
3.3.3 robotium关键源码解释 84
3.4 android自动化测试在多种屏幕下的注意事项 87
3.5 本章小结 90
第4章 android界面自动化黑盒测试 91
4.1 monkey工具 91
4.1.1 运行monkey 93
4.1.2 monkey命令选项参考 97
4.1.3 monkey脚本 98
4.1.4 monkey服务器 105
4.2 编写monkeyrunner用例 109
4.2.1 为待测程序录制和回放用例 110
4.2.2 运行monkeyrunner 110
4.2.3 手工编写monkeyrunner代码 111
4.2.4 编写monkeyrunner插件 114
4.3 本章小结 118
第5章 测试android服务组件 119
5.1 junit的模拟对象技术 119
5.2 测试服务对象 128
5.2.1 服务对象简介 128
5.2.2 在应用中添加服务 130
5.2.3 测试服务对象 136
5.3 本章小结 140
第6章 测试android内容供应组件 142
6.1 控制反转 142
6.1.1 依赖注入 144
6.1.2 服务定位器 146
6.2 内容供应组件 147
6.2.1 统一资源标识符 150
6.2.2 mime类型 152
6.2.3 内容供应组件的虚拟表视图 152
6.3 内容供应组件示例 154
6.4 测试内容供应组件 159
6.5 本章小结 163
第7章 测试android html 5应用 164
7.1 构建android html 5应用 164
7.1.1 webview应用 164
7.1.2 使用视口适配android设备的多种分辨率 170
7.1.3 使用css适配多种分辨率 175
7.1.4 使用chrome浏览器模拟移动设备浏览器 176
7.2 使用qunit测试html 5网页 177
7.2.1 qunit基础 177
7.2.2 qunit中的断言 179
7.2.3 测试回调函数 181
7.2.4 测试webview应用 182
7.3 本章小结 185
第8章 使用selenium测试html 5浏览器应用 186
8.1 selenium组成部分 186
8.2 安装selenium ide 187
8.3 selenium ide界面 188
8.3.1 菜单栏 188
8.3.2 工具栏 189
8.4 使用selenium 189
8.4.1 使用selenium ide录制测试用例 189
8.4.2 运行selenium测试用例 194
8.4.3 等待操作完成 199
8.4.4 selenium webdriver命令 200
8.5 数据驱动测试 206
8.6 selenium编程技巧 208
8.6.1 在测试代码中硬编码测试数据 208
8.6.2 重构selenium ide生成的代码 209
8.7 本章小结 212
第9章 android ndk测试 213
9.1 安装ndk 213
9.2 ndk的基本用法 214
9.3 编译和部署ndk示例程序 214
9.4 java与c/c++之间的交互 217
9.4.1 makefiles 222
9.4.2 动态模块和静态模块 222
9.5 在android设备上执行ndk单元测试 223
9.6 unittest++使用基础 228
9.6.1 添加新测试用例 228
9.6.2 测试用例集合 229
9.6.3 验证宏 229
9.6.4 数组相关的验证宏 230
9.6.5 设置超时 230
9.7 本章小结 231
第10章 android其他测试 232
10.1 android兼容性测试 232
10.1.1 运行android兼容性测试用例集合 232
10.1.2 兼容性测试计划说明 237
10.1.3 添加一个新的测试计划 238
10.1.4 添加一个新的测试用例 239
10.1.5 调查cts测试失败 241
10.2 android脚本编程环境 243
10.2.1 android脚本环境简介 243
10.2.2 安装sl4a 243
10.2.3 为sl4a安装脚本引擎 244
10.2.4 编写sl4a脚本程序 246
10.2.5 在pc上调试脚本程序 250
10.3 国际化测试 251
10.4 模拟来电中断测试 254
10.5 本章小结 255
第11章 持续集成自动化测试 257
11.1 在ant中集成android自动化测试 257
11.1.1 ant使用简介 257
11.1.2 android应用编译过程 262
11.1.3 使用ant编译android工程 263
11.2 在maven中集成android自动化测试 268
11.2.1 使用android maven archetypes创建新android工程 268
11.2.2 android maven工程介绍 270
11.2.3 与设备交互 271
11.2.4 与模拟器交互 272
11.2.5 集成自动化测试 274
11.3 收集代码覆盖率 276
11.4 本章小结 280
第12章 android功能调试工具 281
12.1 使用eclipse调试android应用 281
12.1.1 eclipse调试技巧 282
12.1.2 使用jdb调试 294
12.1.3 设置java远程调试 296
12.1.4 调试器原理简介 301
12.2 查看android的logcat日志 302
12.2.1 过滤logcat日志 303
12.2.2 查看其他logcat内存日志 304
12.3 android调试桥接 304
12.3.1 adb命令参考 306
12.3.2 执行android shell命令 309
12.3.3 dumpsys 312
12.4 调试android设备上的程序 317
12.4.1 调试命令行程序 317
12.4.2 调试android应用 318
12.4.3 调试maven android插件启动的应用 321
12.5 本章小结 322
第13章 android性能测试之分析操作日志 323
13.1 使用traceview分析操作日志 326
13.1.1 记录应用操作日志 326
13.1.2 traceview界面说明 328
13.1.3 使用traceview分析并优化性能瓶颈 329
13.2 使用ddms 334
13.2.1 使用ddms 335
13.2.2 ddms与调试器交互的原理 336
13.2.3 三种启动操作日志记录功能的方法 338
13.3 使用dmtracedump分析函数调用树 339
13.4 本章小结 341
第14章 分析android内存问题 343
14.1 android内存管理原理 343
14.1.1 垃圾内存回收算法 343
14.1.2 gc发现对象引用的方法 351
14.1.3 android内存管理源码分析 352
14.1.4 logcat中的gc信息 361
14.2 调查内存泄露工具 362
14.2.1 shallow size和retained size 362
14.2.2 支配树 363
14.3 分析android内存泄露实例 364
14.3.1 在ddms中检查示例问题程序的内存情况 366
14.3.2 使用mat分析内存泄露 368
14.3.3 弱引用 372
14.3.4 mat的其他界面使用方法 373
14.3.5 对象查询语言oql(object query language) 376
14.3.6 使用jhat分析内存文件 381
14.4 显示图片 382
14.4.1 android应用加载大图片的最佳实践 386
14.4.2 跟踪对象创建 388
14.5 频繁创建小对象的问题 390
14.6 finalizer的问题 393
14.7 本章小结 394
第15章 调试多线程和html 5应用 395
15.1 调试应用无响应问题 395
15.2 android中的多线程 397
15.3 调试线程死锁 400
15.3.1 资源争用问题 400
15.3.2 线程同步机制 405
15.3.3 解决线程死锁问题 406
15.4 strictmode 410
15.4.1 在应用中启用strictmode 413
15.4.2 暂时禁用strictmode 415
15.5 调试android上的浏览器应用 416
15.5.1 在android系统自带的浏览器上调试 416
15.5.2 在chrome浏览器上调试 418
15.6 本章小结 422
第16章  调试ndk程序 423
16.1 使用eclipse调试android ndk程序 423
16.2 在命令行中调试ndk程序 426
16.3 android的c/c++调试器的工作原理 431
16.3.1 调试符号 433
16.3.2 源码 433
16.3.3 多线程调试的问题 433
16.4 本章小结 434