本书从基础、架构、安全、性能优化、新技术、测试等角度,通过简单的代码示例详尽地展示了 Android 发技巧 本书作者技术基础深厚扎实,是新技术的探索和追逐者,他对于技术发自内心地热爱, 是业界非常优秀的 Android 架构师 本书是作者在一线互联网企业工作多年的经验沉淀,从不同角度对 Android 新技术抛砖引玉,由浅深,将实战中的案例抽象成原型,通俗易懂 本书对于技术的解读朴实风趣,深浅出,是 Android 工程师的阶宝典,腾讯、华为、阿里、百度、平安科技等一线移动发工程师联袂推荐
售 价:¥
纸质售价:¥66.70购买纸书
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
内容简介
前言
第1篇 基础篇
第1章 Android触摸事件传递机制
1.1 触摸事件的类型
1.2 事件传递的三个阶段
1.3 View的事件传递机制
1.4 ViewGroup的事件传递机制
第2章 Android View的绘制流程
2.1 绘制的整体流程
2.2 MeasureSpec
2.3 Measure
2.4 Layout
2.5 Draw
第3章 Android动画机制
3.1 逐帧动画(Frame Animation)
3.2 补间动画(Tween Animation)
3.3 属性动画(Property Animation)
3.4 过渡动画(Transition Animation)
第4章 Support Annotation Library使用详解
4.1 Nullness注解
4.2 资源类型注解
4.3 类型定义注解
4.4 线程注解
4.5 RGB颜色值注解
4.6 值范围注解
4.7 权限注解
4.8 重写函数注解
4.9 返回值注解
4.10 @VisibleForTesting
4.11 @Keep
第5章 Percent Support Library使用详解
第6章 Design Support Library使用详解
6.1 Snackbar
6.2 TextInputLayout
6.3 TabLayout
6.4 NavigationView
6.5 FloatingActionButton
6.6 CoordinatorLayout
6.7 CollapsingToolbarLayout
6.8 BottomSheetBehavior
第7章 Android Studio中的NDK开发
7.1 ABI的基本概念
7.2 引入预编译的二进制C/C++函数库
7.3 直接从C/C++源码编译
7.4 使用.so文件的注意事项
第8章 Gradle必知必会
8.1 共享变量的定义
8.2 通用配置
8.3 aar函数库的引用
8.4 签名和混淆的配置
第9章 通过Gradle打包发布函数库到JCenter和Maven Central
9.1 Maven Central和JCenter
9.2 Android Studio获取函数库的原理
9.3 上传函数库到JCenter
第10章 Builder模式详解
10.1 经典的Builder模式
10.2 Builder模式的变种
10.3 变种Builder模式的自动化生成
10.4 开源函数库的例子
第11章 注解在Android中的应用
11.1 注解的定义
11.2 标准注解
11.3 运行时注解
11.4 编译时注解
第12章 ANR产生的原因及其定位分析
12.1 ANR产生的原因
12.2 典型的ANR问题场景
12.3 ANR的定位和分析
12.4 ANR的避免和检测
第13章 Android异步处理技术
13.1 Thread
13.2 HandlerThread
13.3 AsyncQueryHandler
13.4 IntentService
13.5 Executor Framework
13.6 AsyncTask
13.7 Loader
13.8 总结
第14章 Android数据序列化方案研究
14.1 Serializable
14.2 Parcelable
14.3 SQLiteDatabase
14.4 SharedPreferences
14.5 JSON
14.6 Protocol Buffers及Nano-Proto-Buffers
14.7 FlatBuffers
第15章 Android WebView Java和JavaScript交互详解
15.1 Java调用JavaScript
15.2 JavaScript调用Java
第2篇 系统架构篇
第16章 MVP模式及其在Android中的实践
16.1 MVP的基本概念
16.2 MVP与MVC的区别
16.3 MVP的开源实现
16.4 MVP的好处
16.5 MVP存在的问题
第17章 MVVM模式及Android DataBinding实战
17.1 Data Binding表达式
17.2 数据对象
17.3 数据绑定
17.4 事件绑定
第18章 观察者模式的拓展:事件总线
18.1 为何要使用
18.2 原理
18.3 开源实现
18.4 与观察者模式及Android广播的区别
第19章 书写简洁规范的代码
19.1 Java编码规范
19.2 Android命名规范
19.3 CheckStyle的使用
第20章 基于开源项目搭建属于自己的技术堆栈
20.1 APP的整体架构
20.2 技术选型的考量点
20.3 日志记录能力
20.4 JSON解析能力
20.5 数据库操作能力
20.6 网络通信能力
20.7 图片缓存和显示能力
第3篇 经验总结篇
第21章 64K方法数限制原理与解决方案
21.1 64K限制的原因
21.2 使用MultiDex解决64K限制的问题
21.3 如何避免出现64K限制
21.4 配置MultiDex
21.5 MultiDex Support Library的局限性
21.6 在开发阶段优化MultiDex的构建
第22章 Android插件框架机制研究与实践
22.1 基本概念
22.2 开源框架
第23章 推送机制实现原理详解
23.1 推送的开源实现方案
23.2 推送的第三方平台
23.3 自己实现推送功能
第24章 APP瘦身经验总结
24.1 APP为什么变胖了
24.2 从APK文件的结构说起
24.3 优化图片资源占用的空间
24.4 使用Lint删除无用资源
24.5 利用Android Gradle配置
24.6 重构和优化代码
24.7 资源混淆
24.8 插件化
第25章 ndroid Crash日志收集原理与实践
25.1 Java层Crash捕获机制
25.2 Native层Crash捕获机制
25.3 Crash的上报
第4篇 新技术篇
第26章 函数式编程思想及其在Android中的应用
26.1 代码的简化
26.2 Operators简介
第27章 依赖注入及其在Android中的应用
27.1 基本概念
27.2 为何需要框架
27.3 开源框架的选择
第28章 Android世界的Swift:Kotlin在Android中的应用
28.1 选择Kotlin的原因
28.2 Kotlin的安装和配置
28.3 Kotlin语言的特性
28.4 Kotlin的Gradle配置
28.5 将Java类转换成Kotlin类
28.6 相关资料
第29章 React Native For Android入门指南
29.1 环境配置
29.2 Android开发环境的要求
29.3 React Native工程配置
29.4 Android Studio工程概览
29.5 React Native依赖库修改为本地
29.6 React Native学习建议
第30章 Android在线热修复方案研究
30.1 在线热修复的基本流程
30.2 Dexposed
30.3 AndFix
30.4 Nuwa
30.5 总结
第31章 面向切面编程及其在Android中的应用
31.1 AOP的基本概念
31.2 代码织入的时机
31.3 基于AspectJ实现Android平台的AOP
31.4 其他AOP开源框架
第32章 基于Facebook Buck改造Android构建系统
32.1 Buck环境配置
32.2 快速创建基于Buck构建的Android工程
32.3 Buck的基本概念
32.4 项目改造实战
32.5 Buck的自动化改造
第5篇 性能优化篇
第33章 代码优化
33.1 数据结构的选择
33.2 Handler和内部类的正确用法
33.3 正确地使用Context
33.4 掌握Java的四种引用方式
33.5 其他代码微优化
第34章 图片优化
34.1 图片的格式
34.2 图片的压缩
34.3 图片的缓存
第35章 电量优化
35.1 BroadcastReceiver
35.2 数据传输
35.3 位置服务
35.4 AlarmManager
35.5 WakeLock
第36章 布局优化
36.1 include标签共享布局
36.2 ViewStub标签实现延迟加载
36.3 merge标签减少布局层次
36.4 尽量使用CompoundDrawable
36.5 使用Lint
第37章 网络优化
37.1 避免DNS解析
37.2 合并网络请求
37.3 预先获取数据
37.4 避免轮询
37.5 优化重连机制
37.6 离线缓存
37.7 压缩数据大小
37.8 不同的网络环境使用不同的超时策略
37.9 CDN的使用
第6篇 移动安全篇
第38章 Android混淆机制详解
38.1 Java代码的混淆
38.2 Native(C/C++)代码的混淆
38.3 资源文件的混淆
第39章 Android反编译机制详解
39.1 资源文件的反编译
39.2 Java代码的反编译
第40章 客户端敏感信息隐藏技术研究
40.1 敏感信息嵌套在strings.xml中
40.2 敏感信息隐藏在Java源代码中
40.3 敏感信息隐藏在BuildConfig中
40.4 使用DexGuard
40.5 对敏感信息进行伪装或者加密
40.6 敏感信息隐藏在原生函数库中(.so文件)
40.7 对APK进行加固处理
第41章 Android加固技术研究
41.1 爱加密的主要功能
41.2 常见APP漏洞及风险
41.3 Android程序反破解技术
41.4 加固技术研究知识储备
第42章 Android安全编码
42.1 WebView远程代码执行
42.2 WebView密码明文保存
42.3 Android本地拒绝服务
42.4 SharedPreference全局任意读写
42.5 密钥硬编码
42.6 AES/DES/RSA弱加密
42.7 随机函数使用错误
42.8 WebView忽略SSL证书
42.9 HTTPS证书弱校验
42.10 PendingIntent使用不当
第7篇 工具篇
第43章 Android调试工具Facebook Stetho
43.1 视图布局监视
43.2 数据库监视
43.3 网络监视
43.4 dumpapp
43.5 Javascript控制台
43.6 最佳实践
第44章 内存泄漏检测函数库LeakCanary
44.1 基本概念
44.2 LeakCanary的集成
44.3 LeakCanary的原理
44.4 LeakCanary的定制
第45章 基于Facebook Redex实现Android APK的压缩和优化
45.1 转换的时机
45.2 管道的思想
45.3 减少字节码的意义
45.4 混淆和压缩
45.5 使用内联函数
45.6 无用代码的消除
45.7 Redex的集成和使用
第46章 Android Studio你所需要知道的功能
46.1 Annotate
46.2 .ignore插件
46.3 Live Templates
46.4 集成Bug管理系统
第8篇 测试篇
第47章 Android单元测试框架简介
47.1 Java单元测试框架JUnit
47.2 Android单元测试框架Robolectric 3.0
47.3 Java模拟测试框架Mockito
第48章 Android UI自动化测试框架简介
48.1 Monkey
48.2 MonkeyRunner
48.3 UIAutomator
48.4 Robotium
48.5 Espresso
48.6 Appium
第49章 Android静态代码分析实战
49.1 Java代码规范检查工具CheckStyle
49.2 Java静态代码分析工具FindBugs
49.3 Java静态代码分析工具PMD
49.4 Android代码优化工具Lint
第50章 基于Jenkins+Gradle搭建Android持续集成编译环境
50.1 Tomcat的下载和启动
50.2 Jenkins的下载和运行
50.3 Jenkins插件的安装
50.4 Jenkins全局配置
50.5 JOB相关的操作
50.6 Jenkins预定义的环境变量
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜