Android APP开发实战 从规划到上线全程详解

更多详情

内容简介: 本书详尽地介绍了APP从规划到上线过程中所涉及的各方面知识,包括产品规划和原型设计、效果图设计、切图和尺寸标注、APP与服务器间的协作、字符编码、网络、多媒体、数据加密、设计模式、APP架构设计、APP性能优化、开发工具的使用、APP测试和项目管理等。
本书帮助读者开阔眼界,且能够以更专业和高效的方式完成APP的开发,适合新APP工程师作为开发参考。

目录: 第 1章 开发APP前的准备事项… …………………………… 1
1.1 APP适配的硬件…………………………… 2
1.2 APP横竖屏界面的选择…………………………… 2
1.3 APP适配的操作系统版本…………………………… 2
1.4 APP适配的屏幕尺寸…………………………… 3
1.5 APP开发样机的选择…………………………… 4
1.6 APP内置的图片资源…………………………… 4
第2章 APP产品和设计人员的工作……5
2.1 编写产品文档时的注意事项… …………………………… 6
2.2 设计效果图时的注意事项…………………………… 17
2.3 APP的切图工作……………………………18
2.4 点9图简介… ……………………………20
2.4.1 点9图……………………………20
2.4.2 制作工具… ……………………………20
2.4.3 注意事项… …………………………… 21
2.5 产品和设计文档的版本管理…………………………… 21
第3章 APP端和服务器端的协作…………………………… 22
3.1 接口设计注意事项… ……………………………23
3.2 安全方案……………………………30
3.2.1 HTTP命令的使用… ……………………………30
3.2.2 使用时间戳参数 … …………………………… 31
3.2.3 数据加密 … ……………………………32
3.2.4 密码的处理 … ……………………………32
3.2.5 数据的存储 … ……………………………32
3.3 登录方式……………………………32
3.3.1 账号+密码……………………………32
3.3.2 账号+密码+验证码……………………………32
3.4 登录状态的维持……………………………33
3.4.1 利用Token实现… ……………………………33
3.4.2 利用Cookie实现……………………………34
3.4.3 利用账号和密码实现… ……………………………35
3.5 数据同步方案……………………………35
3.5.1 文件的同步… ……………………………35
3.5.2 地址数据的同步… ……………………………36
3.5.3 非地址数据的同步… ……………………………37
3.6 业务逻辑的实现……………………………38
3.7 接口文档的维护……………………………38
第4章 字符编码… …………………………… 40
4.1 字符集… ……………………………41
4.2 字符编码……………………………42
4.3 字节序……………………………43
第5章 TCP/IP概述…………………………… 44
5.1 协议简介… ……………………………45
5.2 TCP和UDP的区别… ……………………………45
5.2.1 面向连接服务… ……………………………45
5.2.2 无连接服务… ……………………………46
第6章 HTTP网络请求… …………………………… 47
6.1 HTTP简介……………………………48
6.1.1 协议… ……………………………48
6.1.2 HTTP方法… ……………………………48
6.1.3 HTTP消息… ……………………………49
6.1.4 HTTP头字段介绍… ……………………………52
6.1.5 Keep-Alive模式介绍… ……55
6.1.6 HTTP状态码简介… ……………………………56
6.2 Cookie简介… ……………………………56
6.2.1 Cookie……………………………56
6.2.2 Cookie的设置和发送……………………………57
6.3 Session简介……………………………57
6.3.1 Session… ……………………………57
6.3.2 SessionID……………………………58
6.4 短连接与长连接……………………………58
6.4.1 短连接… ……………………………58
6.4.2 长连接… ……………………………58
6.4.3 使用场景… ……………………………59
6.5 Volley网络库简介……………………………59
6.5.1 Volley网络库… ……………………………59
6.5.2 Volley网络库的使用… ……………………………66
第7章 HTTPS概述…………………………… 73
7.1 协议简介… ……………………………74
7.2 HTTPS的认证类型… ……………………………74
7.2.1 单向认证… ……………………………74
7.2.2 双向认证… ……………………………75
第8章 加密简介… …………………………… 76
8.1 对称加密… ……………………………77
8.2 非对称加密……………………………77
8.3 MD5简介… ……………………………77
第9章 设计模式…………………………… 80
9.1 设计模式简介… ……………………………81
9.2 面向对象设计原则……………………………81
9.3 设计模式类别……………………………81
9.3.1 单例模式… ……………………………82
9.3.2 Builder模式 ……………………………83
9.3.3 原型模式… ……………………………83
9.3.4 工厂方法模式… ……………………………83
9.3.5 策略模式… ……………………………84
9.3.6 状态模式… ……………………………84
9.3.7 命令模式… ……………………………85
9.3.8 观察者模式… ……………………………85
9.3.9 备忘录模式… ……………………………85
9.3.10 迭代器模式……………………………85
9.3.11 模板方法模式……………………………85
9.3.12 代理模式……………………………85
9.3.13 组合模式……………………………86
9.3.14 适配器模式……………………………86
9.3.15 外观模式……………………………86
9.3.16 桥接模式……………………………86
第 10章 架构模式… …………………………… 87
10.1 MVC架构……………………………88
10.2 MVP架构……………………………88
10.3 MVVM架构……………………………89
10.4 MVP+VM架构… ……………………………89
第 11章 APP架构设计…………………………… 90
11.1 基本原则……………………………91
11.2 分层设计……………………………92
11.2.1 三层架构……………………………92
11.2.2 View层设计… ……………………………92
11.2.3 业务逻辑层设计(Presenter)……………………………94
11.2.4 数据访问层设计(Model)…… 94
11.2.5 功能模块设计……………………………94
11.3 层间通信……………………………96
11.3.1 通信方式……………………………96
11.3.2 交互模式……………………………96
11.4 跨业务模块调用……………………………97
11.4.1 跨业务模块调用简介……………………………97
11.4.2 跨业务模块调用方案……………………………97
第 12章 Activity概述…………………………… 98
12.1 Activity启动方式……………………………99
12.1.1 启动模式……………………………99
12.1.2 FLAG介绍…………………………… 100
12.2 Activity消息路由… …………………………… 101
12.2.1 设计思路…………………………… 101
12.2.2 具体实现…………………………… 101
12.3 Activity数据的保存和恢复……103
12.3.1 临时保存数据和恢复数据…… 103
12.3.2 持久保存数据和恢复数据…… 103
12.4 Activity数据传递… …………………………… 104
12.4.1 数据传递媒介…………………………… 104
12.4.2 数据传递机制…………………………… 108
12.5 BaseActivity设计…………………………… 109
12.5.1 应用级别的BaseActivity设计…………………………… 109
12.5.2 功能级别的BaseActivity设计…………………………… 111
第 13章 Service概述……………………………114
13.1 Service的不同形式… …………………………… 115
13.2 Service与线程… …………………………… 115
13.3 IntentService… …………………………… 116
13.4 前台服务… …………………………… 116
13.5 服务的生命周期… …………………………… 117
第 14章 Broadcast概述… ……………………………118
14.1 广播机制简介…………………………… 119
14.2 BroadcastReceiver…………………………… 119
14.2.1 静态注册…………………………… 119
14.2.2 动态注册…………………………… 120
14.3 广播类型… …………………………… 120
14.3.1 普通广播(Normal…Broadcast)…… 120
14.3.2 系统广播(System…Broadcast)…… 121
14.3.3 有序广播(Ordered…Broadcast)…… 121
14.3.4 局部广播(Local…Broadcast)…… 123
14.4 广播的安全性… …………………………… 123
第 15章 ContentProvider概述… ……125
第 16章 Fragment概述……………………………127
16.1 Fragment简介… …………………………… 128
16.2 Fragment的创建…………………………… 128
16.3 Fragment的懒加载…………………………… 130
16.4 Fragment的数据保存和恢复… 133
16.4.1 临时保存数据和恢复…………………………… 133
16.4.2 持久保存数据和恢复…………………………… 134
16.5 Fragment的使用场景…………………………… 134
第 17章 Android权限……………………………135
17.1 权限分类…………………………… 136
17.1.1 Normal Permissions…… 136
17.1.2 Dangerous…Permissions…… 137
17.2 动态权限申请…………………………… 138
17.3 兼容性问题…………………………… 139
第 18章 Android动画…………………………… 140
18.1 帧动画…………………………… 141
18.2 View动画…………………………… 142
18.3 属性动画简介… …………………………… 144
18.3.1 属性动画…………………………… 144
18.3.2 使用示例…………………………… 145
18.4 Activity切换动画… …………………………… 147
第 19章 图片类型…………………………… 149
19.1 位图简介…………………………… 150
19.1.1 位图…………………………… 150
19.1.2 WebP格式…………………………… 150
19.2 矢量图简介…………………………… 151
第 20章 Android矢量图的使用……152
20.1 功能简介…………………………… 153
20.2 兼容性处理…………………………… 154
20.3 Vector语法简介…………………………… 155
20.4 Vector静态图的使用…………………………… 157
20.5 Vector动态图的使用…………………………… 159
20.5.1 功能实现…………………………… 159
20.5.2 动态Vector兼容性问题…… 161
第 21章 Android异常……………………………162
21.1 异常分类…………………………… 163
21.2 异常处理…………………………… 163
21.2.1 使用try…catch…处理异常…………………………… 164
21.2.2 使用UncaughtException Handler处理异常…………………………… 164
21.2.3 ANR异常的处理…………………………… 170
21.3 注意事项…………………………… 174
第 22章 Android的本地存储……………………………175
22.1 内部存储(Internal Storage)…… 176
22.1.1 非缓存文件的处理…………………………… 176
22.1.2 缓存文件的处理…………………………… 176
22.2 外部存储(External Storage)…… 177
22.2.1 外部公共存储…………………………… 178
22.2.2 外部私有存储…………………………… 179
22.2.3 使用作用域目录访问…………………………… 182
第 23章 ABI管理…………………………… 184
23.1 ABI简介…………………………… 185
23.2 支持的ABI…………………………… 185
23.3 为特定ABI生成代码…………………………… 186
23.4 Android系统的ABI管理…………………………… 186
23.5 Android系统ABI支持…………………………… 187
23.6 安装时自动解压缩原生代码…………………………… 187
第 24章 ProGuard混淆…………………………… 188
24.1 ProGuard简介…………………………… 189
24.2 ProGuard指令介绍…………………………… 189
24.3 ProGuard注意事项…………………………… 190
24.4 ProGuard相关文件…………………………… 192
第 25章 Android Studio使用技巧……193
25.1 编译打包…………………………… 194
25.2 功能宏的使用…………………………… 196
25.3 集成SO文件…………………………… 196
25.4 模板的定制使用…………………………… 197
第 26章 APP缓存处理……………………………211
26.1 缓存简介…………………………… 212
26.2 缓存控制…………………………… 212
26.3 缓存实现…………………………… 212
26.4 WebView缓存…………………………… 213
26.5 缓存注意事项…………………………… 214
26.6 清除数据和清除缓存的区别……214
第 27章 APP性能优化……………………………215
27.1 减少APP所占空间大小… …………………………… 216
27.1.1 减少图片所占空间大小…… 216
27.1.2 减少音频文件所占空间大小…………………………… 221
27.1.3 减少代码所占空间大小…… 221
27.1.4 使用APK Analyzer分析APP…………………………… 222
27.1.5 利用工具减少APP大小…… 226
27.2 减少APP使用的网络流量…………………………… 228
27.3 内存优化…………………………… 229
27.3.1 节省内存…………………………… 229
27.3.2 防止内存泄露…………………………… 231
27.3.3 防止OOM…………………………… 232
27.4 UI性能优化…………………………… 232
27.5 电量优化…………………………… 233
27.6 运行速度优化…………………………… 233
27.7 性能优化工具…………………………… 234
27.7.1 Android Studio自带工具…………………………… 234
27.7.2 Android系统工具…………………………… 235
27.7.3 三方工具…………………………… 236
第 28章 Log功能设计……………………………237
28.1 Log输出控制…………………………… 238
28.2 注意事项…………………………… 239
28.3 Log数据的格式化…………………………… 239
28.4 使用AOP技术输出Log…………………………… 239
28.4.1 AOP简介…………………………… 239
28.4.2 AOP技术的使用…………………………… 240
第 29章 APP版本管理……………………………254
第30章 APP版本更新功能设计……………………………256
30.1 功能项…………………………… 257
30.1.1 服务器端功能…………………………… 257
30.1.2 APP端功能…………………………… 257
30.2 APP和服务器交互…………………………… 257
第31章 APP常用功能设计…………………………… 260
31.1 启动界面设计…………………………… 261
31.1.1 启动界面白屏解决方案…… 261
31.1.2 启动界面屏蔽返回按键…………………………… 261
31.2 首页设计…………………………… 262
31.3 登录功能设计…………………………… 262
31.4 商品详情界面设计…………………………… 262
31.5 购物车功能设计…………………………… 262
31.6 商品展示界面功能设计…………………………… 263
31.7 个人中心界面功能设计…………………………… 263
31.8 搜索功能设计…………………………… 263
31.9 WebView功能设计…………………………… 264
31.10 出错提示功能设计…………………………… 266
31.11 界面内容隐藏和显示设计…………………………… 266
31.12 提示功能设计…………………………… 267
31.12.1 三种控制简介… …………………………… 267
31.12.2 AlertDialog介绍…………………………… 268
31.12.3 Toast介绍…………………………… 269
31.12.4 Snackbar介绍…………………………… 270
31.13 定期执行任务的功能设计…………………………… 271
31.13.1 JobScheduler介绍…………………………… 271
31.13.2 JobScheduler的替代方案…………………………… 274
31.13.3 注意事项…………………………… 277
31.14 全屏模式的功能设计…………………………… 277
31.14.1 Lean Back…………………………… 277
31.14.2 Immersive…………………………… 278
31.15 开机自启动的功能设计…………………………… 279
31.15.1 普通模式…………………………… 279
31.15.2 直接启动模式…………………………… 279
31.15.3 示例代码…………………………… 279
31.16 APP快捷图标的功能设计…………………………… 280
31.16.1 简介…………………………… 280
31.16.2 静态快捷图标…………………………… 281
31.16.3 动态快捷图标…………………………… 282
31.17 针对Android7.0及更高版本的后台优化方案…………………………… 282
31.17.1 对于CONNECTIVITY_ACTION…限制的解决方案…………………………… 283
31.17.2 对于ACTION_NEW_ PICTURE和ACTION_ NEW_VIDEO的限制的解决方法…………………………… 284
31.18 服务器接口的单元测试…………………………… 285
31.18.1 单元测试…………………………… 286
31.18.2 使用MockWebServer进行接口的单元测试…………………………… 286
31.19 自动调整文字大小的TextView…………………………… 289
31.19.1 Default方式…………………………… 290
31.19.2 Granularity方式…………………………… 290
31.19.3 Preset Sizes方式…………………………… 291
第32章 代码封装……………………………293
第33章 APP测试……………………………295
第34章 项目管理……………………………298
34.1 项目团队成员…………………………… 299
34.2 需求处理…………………………… 299
34.3 进度计划… …………………………… 300
第35章 Git使用……………………………302
35.1 Git工具简介…………………………… 303
35.1.1 客户端工具…………………………… 303
35.1.2 服务器端工具 …………………………… 306
35.2 Git常用命令…………………………… 306
35.3 使用Git的注意事项…………………………… 307