作品简介

《Android高级进阶》是Android的进阶学习指南,主要为Android初中级开发者进阶所需的知识,高级开发者也可以从本书中发现很多共鸣点。《Android高级进阶》从8个方面对50个知识点进行分类讲解,包括基础篇、系统架构篇、经验总结篇、新技术篇、性能优化篇、移动安全篇、工具篇、测试篇。熟练掌握这些知识点后,应该就能够应付实际项目开发中的绝大部分问题了。

《Android高级进阶》的主要目的在于给读者一个完整的Android中高级开发者知识图谱。笔者希望通过《Android高级进阶》的系统讲解,能够帮助读者在面试和工作中收获自己满意的成绩。

顾浩鑫,网络ID:ASCE1885,平安金融科技移动研发工程师,目前主要从事Android&React Native相关研发工作,毕业于华中科技大学图像识别与人工智能研究所,曾先后就职于华为、百度、平安科技。

作品目录

  • 内容简介
  • 前言
  • 第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预定义的环境变量
展开全部