《Android高级进阶》目录

1篇 基础篇 

1章 Android触摸事件传递机制 

11 触摸事件的类型 

12 事件传递的三个阶段 

13 View的事件传递机制 

14 ViewGroup的事件传递机制 

2章 Android View的绘制流程 

21 绘制的整体流程 

22 MeasureSpec 

23 Measure 

24 Layout 

25 Draw 

3章 Android 动画机制 

31 逐帧动画(Frame Animation 

311 XML 资源文件方式 

312 代码方式 

32 补间动画(Tween Animation 

321 插值器 Interpolator 

322 AlphaAnimation 

323 ScaleAnimation 

324 TranslateAnimation 

325 RotateAnimation 

326 自定义补间动画 

33 属性动画(Property Animation 

331 Evaluator 

332 AnimatorSet 

333 ValueAnimator 

334 ObjectAnimator 

34 过渡动画(Transition Animation 

4章 Support Annotation Library 使用详解 

41 Nullness 注解 

42 资源类型注解 

43 类型定义注解 

44 线程注解 

45 RGB 颜色值注解 

46 值范围注解 

47 权限注解 

48 重写函数注解 

49 返回值注解 

410 @VisibleForTesting 

411 @Keep 

5章 Percent Support Library使用详解 

6章 Design Support Library使用详解 

61 Snackbar 

62 TextInputLayout 

63 TabLayout 

64 NavigationView 

641 导航菜单 

642 导航头部 

65 FloatingActionButton 

651 使用浮动操作按钮 

652 其他选项 

653 点击事件 

66 CoordinatorLayout 

67 CollapsingToolbarLayout 

68 BottomSheetBehavior 

7章 Android Studio中的NDK开发 

71 ABI的基本概念 

72 引入预编译的二进制 C/C++ 函数库 

73 直接从 C/C++ 源码编译 

731 配置 ndkdir 变量 

732 在 Gradle 中配置 NDK 模块 

733 添加 C/C++ 文件到指定的目录 

74 使用 so 文件的注意事项 

741 使用高平台版本编译的 so 文件运行在低版本的设备上 

742 混合使用不同的C++ 运行时编译的 so 文件 

743 没有为每个支持的 CPU 架构提供对应的 so 文件 

744 将 so 文件放在错误的地方 

745 只提供 armeabi 架构的 so 文件而忽略其他 ABIs  

8章 Gradle 必知必会 

81 共享变量的定义 

82 通用配置 

83 aar 函数库的引用 

84 签名和混淆的配置 

9章 通过Gradle打包发布函数库到JCenterMaven Central 

91 Maven Central JCenter 

911 Maven Central 

912 JCenter 

92 Android Studio 获取函数库的原理 

93 上传函数库到 JCenter 

931 步骤一:在 Bintray 网站上注册一个账号 

932 步骤二:创建一个 Sonatype 账号 

933 步骤三:在 Bintray 网站使能自动签名 

934 步骤四:生成 POM 相关的信息 

935 步骤五:上传函数库到 Bintray 

936 步骤六:发布 Bintray 用户仓库到 JCenter 

937 步骤七:同步函数库到 Maven Central 

10章 Builder模式详解 

101 经典的 Builder 模式 

102 Builder 模式的变种 

103 变种 Builder 模式的自动化生成 

104 开源函数库的例子 

11章 注解在 Android 中的应用 

111 注解的定义 

112 标准注解 

1121 编译相关注解 

1122 资源相关注解 

1123 元注解 

113 运行时注解 

114 编译时注解 

1141 定义注解处理器 

1142 注册注解处理器 

1143 android-apt插件 

12章 ANR产生的原因及其定位分析 

121 ANR 产生的原因 

122 典型的 ANR 问题场景 

123 ANR 的定位和分析 

1231 Logcat 日志信息 

1232 tracestxt 日志信息 

124 ANR的避免和检测 

1241 StrictMode 

1242 BlockCanary 

13章 Android异步处理技术 

131 Thread 

132 HandlerThread 

133 AsyncQueryHandler 

134 IntentService 

135 Executor Framework 

136 AsyncTask 

137 Loader 

138 总结 

14章 Android数据序列化方案研究 

141 Serializable 

142 Parcelable 

143 SQLiteDatabase 

144 SharedPreferences 

145 JSON 

146 Protocol BuffersNano-Proto-Buffers 

147 FlatBuffers 

15章 Android WebView Java JavaScript 交互详解 

151 Java 调用 JavaScript 

152 JavaScript 调用 Java 

2篇 系统架构篇 

16章 MVP模式及其在Android中的实践 

161 MVP 的基本概念 

162 MVP MVC 的区别 

163 MVP 的开源实现 

1631 Android-Architecture 

1632 TODO-MVP 

1633 TODO-MVP-Loaders 

1634 TODO-MVP-Clean 

1635 TODO-Databinding 

1636 其他开源参考实现 

164 MVP 的好处 

165 MVP 存在的问题 

17章 MVVM模式及Android DataBinding实战 

171 Data Binding 表达式 

172 数据对象 

173 数据绑定 

174 事件绑定 

18章 观察者模式的拓展:事件总线 

181 为何要使用 

182 原理 

183 开源实现 

1831 EventBus 

1832 otto 

184 与观察者模式及 Android 广播的区别 

19章 书写简洁规范的代码 

191 Java 编码规范 

1911 源代码文件的定义 

1912 源代码文件的结构 

1913 遵循的格式 

1914 命名约定 

1915 Javadoc 

192 Android 命名规范 

1921 布局文件的命名 

1922 资源文件的命名 

1923 类的命名 

193 CheckStyle 的使用 

20章 基于开源项目搭建属于自己的技术堆栈 

201 APP 的整体架构 

202 技术选型的考量点 

203 日志记录能力 

204 JSON 解析能力 

2041 gson 

2042 jackson 

2043 Fastjson 

2044 LoganSquare 

205 数据库操作能力 

2051 ActiveAndroid 

2052 ormlite 

2053 greenDAO 

2054 Realm 

206 网络通信能力 

2061 android-async-http 

2062 OkHttp 

2063 Volley 

2064 Retrofit 

207 图片缓存和显示能力 

2071 BitmapFun 

2072 Picasso 

2073 Glide 

2074 Fresco 

2075 Android-Universal-Image-Loader 

3篇 经验总结篇 

21章 64K方法数限制原理与解决方案 

211 64K 限制的原因 

212 使用 MultiDex 解决 64K 限制的问题 

2121 Android 50 之前的版本 

2122 Android 50 及之后的版本 

213 如何避免出现 64K 限制 

214 配置 MultiDex 

215 MultiDex Support Library 的局限性 

216 在开发阶段优化 MultiDex 的构建 

22章 Android 插件框架机制研究与实践 

221 基本概念 

2211 宿主和插件 

2212 ClassLoader 机制 

222 开源框架 

2221 android-pluginmgr 

2222 dynamic-load-apk 

2223 DynamicAPK 

2224 DroidPlugin 

2225 Small 


23章 推送机制实现原理详解 

231 推送的开源实现方案 

2311 基于 XMPP 协议 

2312 基于 MQTT 协议 

232 推送的第三方平台 

233 自己实现推送功能 

2331 长连接的建立(TCPConnectThread 

2332 数据的发送(TCPSendThread 

2333 数据的接收(TCPReceiveThread 

2334 心跳包的实现(TCPHeartBeatThread 

24章 APP 瘦身经验总结 

241 APP 为什么变胖了 

242 从 APK 文件的结构说起 

243 优化图片资源占用的空间 

2431 无损压缩 [ImageOptim] 

2432 有损压缩 [ImageAlpha] 

2433 有损压缩 [TinyPNG] 

2434 PNG/JPEG 转换为 WebP 

2435 尽量使用 NinePatch 格式的 PNG  

244 使用 Lint 删除无用资源 

245 利用 Android Gradle 配置 

2451 minifyEnable 

2452 shrinkResources 

2453 resConfigs 

2454 ndkabiFilters 

246 重构和优化代码 

247 资源混淆 

248 插件化 

25章 Android Crash 日志收集原理与实践 

251 Java Crash 捕获机制 

2511 基本原理 

2512 线程信息 

2513 SharedPreference 信息 

2514 系统设置 

2115 Logcat 中的日志记录 

2516 自定义 Log 文件中的内容 

2517 MemInfo 信息 


252 Native Crash 捕获机制 

253 Crash 的上报 

4篇 新技术篇 

26章 函数式编程思想及其在Android中的应用 

261 代码的简化 

262 Operators 简介 

27章 依赖注入及其在Android中的应用 

271 基本概念 

2711 构造函数注入 

2712 Setter 函数注入 

2713 接口注入 

272 为何需要框架 

273 开源框架的选择 

2731 ButterKnife 

2732 RoboGuice 

2733 Dagger 

2734 Dagger2 

2735 框架的对比 

28章 Android世界的SwiftKotlinAndroid中的应用 

281 选择 Kotlin 的原因 

282 Kotlin 的安装和配置 

283 Kotlin 语言的特性 

2831 可表达性 

2832 空类型安全 

2833 扩展函数 

284 Kotlin Gradle 配置 

285 将 Java 类转换成 Kotlin  

286 相关资料 

29章 React Native For Android入门指南 

291 环境配置 

2911 Homebrew 

2912 nvm 

2913 Nodejs 

2914 watchman 

2915 flow 

292 Android 开发环境的要求 

293 React Native 工程配置 

2931 安装react-native 

2932 生成工程 

294 Android Studio 工程概览 

295 React Native 依赖库修改为本地 

2951 下载 react-nativeaar 

2952 react-nativeaar 的文件内容 

2953 Gradle 本地依赖 

2954 将 node_modules 上传到 svn/git 

296 React Native 学习建议 

30章 Android在线热修复方案研究 

301 在线热修复的基本流程 

302 Dexposed 

3021 如何集成 

3022 基本用法 

3023 在线热修复 

3024 平台的限制 

303 AndFix 

3031 如何集成 

3032 补丁包生成工具 

3033 平台的限制 

304 Nuwa 

3041 基本原理 

3042 如何集成 

3043 补丁生成工具 

3044 平台的限制 

305 总结 

31章 面向切面编程及其在Android中的应用 

311 AOP 的基本概念 

312 代码织入的时机 

313 基于 AspectJ 实现 Android 平台的 AOP 

3131 Hugo 的用法简介 

3132 Hugo 的实现原理 

314 其他 AOP 开源框架 

32章 基于Facebook Buck改造Android构建系统 

321 Buck环境配置 

3211 Homebrew 方式 

3212 手动构建方式 

3213 安装 Watchman 

3214 安装 Android SDK Android NDK 

322 快速创建基于 Buck 构建的 Android 工程 

323 Buck 的基本概念 

3231 构建规则(Build Rule 

3232 构建目标(Build Target 

3233 构建文件(Build File 

3234 构建目标模式(Build Target Pattern 

324 项目改造实战 

3241 步骤一:手动下载工程依赖的第三方 Jar包或者aar 

3242 步骤二:将 R* 常量修改为非 final  

3243 步骤三:创建 BUCK 文件 

3244 步骤四:编译 Buck buck-android-support 

3245 步骤五:Exopackage 的使用 

325 Buck 的自动化改造 

5篇 性能优化篇 

33章 代码优化 

331 数据结构的选择 

332 Handler 和内部类的正确用法 

333 正确地使用 Context 

3331 Context 的种类 

3332 错误使用 Context 导致的内存泄漏 

3333 不同 Context 的对比 

334 掌握 Java 的四种引用方式 

335 其他代码微优化 

3351 避免创建非必要的对象 

3352 对常量使用 static final 修饰 

3353 避免内部的 Getters/Setters 

3354 代码的重构 

34章 图片优化 

341 图片的格式 

3411 JPEG 

3412 PNG 

3413 GIF 

3414 WebP 

342 图片的压缩 

3421 无损压缩 ImageOptim 

3422 有损压缩 ImageAlpha 

3423 有损压缩 TinyPNG 

3424 PNG/JPEG 转换为 WebP 

3425 尽量使用 NinePatch 格式的 PNG  

343 图片的缓存 

35章 电量优化 

351 BroadcastReceiver 

352 数据传输 

353 位置服务 

354 AlarmManager 

355 WakeLock 

36章 布局优化 

361 include 标签共享布局 

362 ViewStub 标签实现延迟加载 

363 merge 标签减少布局层次 

364 尽量使用 CompoundDrawable 

365 使用 Lint 

37章 网络优化 

371 避免 DNS 解析 

372 合并网络请求 

373 预先获取数据 

374 避免轮询 

375 优化重连机制 

376 离线缓存 

377 压缩数据大小 

378 不同的网络环境使用不同的超时策略 

379 CDN 的使用 

6篇 移动安全篇 

38章 Android混淆机制详解 

381 Java 代码的混淆 

3811 Proguard 的特性 

3812 Proguard 的使能和配置 

3813 proguard-rulespro 文件的编写 

3814 Proguard 生成的文件 

3815 Proguard 混淆规则汇总 

382 NativeC/C++ 代码的混淆 

383 资源文件的混淆 

39章 Android 反编译机制详解 

391 资源文件的反编译 

3911 ApkTool 的安装 

3912 ApkTool 的使用 

392 Java 代码的反编译 

40章 客户端敏感信息隐藏技术研究 

401 敏感信息嵌套在 stringsxml  

402 敏感信息隐藏在 Java 源代码中 

403 敏感信息隐藏在 BuildConfig  

404 使用 DexGuard 

405 对敏感信息进行伪装或者加密 

406 敏感信息隐藏在原生函数库中(.so文件) 

407 对APK进行加固处理 

41章 Android 加固技术研究 

411 爱加密的主要功能 

4111 漏洞分析 

4112 加密服务 

4113 渠道监测 

412 常见 APP 漏洞及风险 

4121 静态破解 

4122 二次打包 

4123 本地储存数据窃取 

4124 界面截取 

4125 输入法攻击 

4126 协议抓取 

413 Android 程序反破解技术 

4131 对抗反编译 

4132 对抗静态分析 

4133 对抗动态调试 

4134 防止重编译 

414 加固技术研究知识储备 

4141 掌握常见的破解分析工具 

4142 掌握 Dalvik 指令集代码 

4143 掌握 Dex Odex 文件格式 

4144 掌握 Smali 文件格式 

4145 掌握基于 Android ARM 汇编语言基础 

42章 Android安全编码 

421 WebView 远程代码执行 

422 WebView 密码明文保存 

423 Android 本地拒绝服务 

4231 非法序列化对象导致的 ClassNotFoundException 

4232 空 Action 导致的 NullPointerException 

4233 强制类型转换导致的 ClassCastException 

4234 数组越界导致的 IndexOutOfBoundsException 

424 SharedPreference 全局任意读写 

425 密钥硬编码 

426 AES/DES/RSA 弱加密 

427 随机函数使用错误 

428 WebView 忽略 SSL 证书 

429 HTTPS 证书弱校验 

4291 自定义 X509TrustManager 未实现安全校验 

4292 自定义 HostnameVerifier 默认接受所有域名 

4293 SSLSocketFactory 信任所有证书 

4210 PendingIntent 使用不当 

7篇 工具篇 

43章 Android调试工具Facebook Stetho 

431 视图布局监视 

432 数据库监视 

433 网络监视 

4331 网络模块使用的是 HTTPUrlConnection 

4332 网络模块使用的是 OkHttp 

434 dumpapp 

4341 插件的编写 

4342 插件的集成 

4343 插件的使用 

435 Javascript 控制台 

436 最佳实践 

44章 内存泄漏检测函数库 LeakCanary 

441 基本概念 

442 LeakCanary 的集成 

443 LeakCanary 的原理 

444 LeakCanary 的定制 

4441 RefWatcher 的自定义 

4442 通知页面样式的自定义 

4443 内存泄漏堆栈信息保存个数的自定义 

4444 Watcher 的延时 

4445 自定义内存泄漏堆栈信息和 heap dump 的处理方式 

4446 忽略特定的弱引用 

4447 不监视特定的 Activity  

45章 基于Facebook Redex实现Android APK的压缩和优化 

451 转换的时机 

452 管道的思想 

453 减少字节码的意义 

454 混淆和压缩 

455 使用内联函数 

456 无用代码的消除 

457 Redex 的集成和使用 

4571 依赖的安装 

4572 下载,构建和安装 

4573 使用 

46章 Android Studio你所需要知道的功能 

461 Annotate 

462 .ignore 插件 

463 Live Templates 

464 集成 Bug 管理系统 

8篇 测试篇 

47章 Android单元测试框架简介 

471 Java 单元测试框架 JUnit 

472 Android 单元测试框架 Robolectric 3

473 Java 模拟测试框架 Mockito 

4731 行为的验证 

4732 Stub(桩函数)的使用 

48章 Android UI自动化测试框架简介 

481 Monkey 

482 MonkeyRunner 

483 UIAutomator 

484 Robotium 

485 Espresso 

486 Appium 

49章 Android静态代码分析实战 

491 Java代码规范检查工具CheckStyle 

4911 Gradle方式 

4912 Android Studio插件方式 

492 Java静态代码分析工具FindBugs 

4921 Gradle方式 

4922 Android Studio插件方式 

493 Java静态代码分析工具PMD 

4931 Gradle方式 

4932 Android Studio插件方式 

494 Android代码优化工具Lint 

4941 Gradle方式 

4942 Android Studio插件方式 

50章 基于JenkinsGradle搭建Android持续集成编译环境 

501 Tomcat的下载和启动 

502 Jenkins的下载和运行 

503 Jenkins插件的安装 

504 Jenkins全局配置 

5041 配置 JDK 环境 

5042 配置 Android SDK 环境 

5043 配置 Git 环境 

5044 配置 SVN 环境 

5045 配置 Gradle 环境 

505 JOB相关的操作 

5051 JOB 的创建 

5052 JOB 的配置 

5053 Gradle 的配置 

5054 构建触发器的配置 

5055 参数化构建 

506 Jenkins预定义的环境变量

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhifanxu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值