图书介绍
Android高级进阶2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

- 顾浩鑫著 著
- 出版社: 北京:电子工业出版社
- ISBN:7121298455
- 出版时间:2016
- 标注页数:516页
- 文件大小:43MB
- 文件页数:538页
- 主题词:
PDF下载
下载说明
Android高级进阶PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1篇 基础篇2
第1章 Android触摸事件传递机制2
1.1 触摸事件的类型2
1.2 事件传递的三个阶段3
1.3 View的事件传递机制4
1.4 ViewGroup的事件传递机制10
第2章 Android View的绘制流程16
2.1 绘制的整体流程17
2.2 MeasureSpec17
2.3 Measure19
2.4 Layout22
2.5 Draw22
第3章 Android动画机制25
3.1 逐帧动画(Frame Animation)25
3.1.1 XML资源文件方式25
3.1.2 代码方式26
3.2 补间动画(Tween Animation)27
3.2.1 插值器Interpolator27
3.2.2 AlphaAnimation29
3.2.3 ScaleAnimation30
3.2.4 TranslateAnimation31
3.2.5 RotateAnimation32
3.2.6 自定义补间动画34
3.3 属性动画(Property Animation)34
3.3.1 Evaluator35
3.3.2 AnimatorSet36
3.3.3 ValueAnimator36
3.3.4 ObjectAnimator38
3.4 过渡动画(Transition Animation)40
第4章 Support Annotation Library使用详解46
4.1 Nullness注解47
4.2 资源类型注解48
4.3 类型定义注解50
4.4 线程注解52
4.5 RGB颜色值注解52
4.6 值范围注解53
4.7 权限注解53
4.8 重写函数注解54
4.9 返回值注解55
4.10 @VisibleForTesting55
4.11 @Keep55
第5章 Percent Support Library使用详解57
第6章 Design Support Library使用详解62
6.1 Snackbar62
6.2 TextInputLayout63
6.3 TabLayout64
6.4 NavigationView65
6.4.1 导航菜单66
6.4.2 导航头部67
6.5 FloatingActionButton70
6.5.1 使用浮动操作按钮70
6.5.2 其他选项71
6.5.3 点击事件71
6.6 CoordinatorLayout72
6.7 CollapsingToolbarLayout73
6.8 BottomSheetBehavior75
第7章 Android Studio中的NDK开发77
7.1 ABI的基本概念77
7.2 引入预编译的二进制C/C++函数库79
7.3 直接从C/C++源码编译79
7.3.1 配置ndk.dir变量79
7.3.2 在Gradle中配置NDK模块79
7.3.3 添加C/C++文件到指定的目录81
7.4 使用.so文件的注意事项81
7.4.1 使用高平台版本编译的.so文件运行在低版本的设备上81
7.4.2 混合使用不同的C++运行时编译的.so文件82
7.4.3 没有为每个支持的CPU架构提供对应的.so文件82
7.4.4 将.so文件放在错误的地方82
7.4.5 只提供armeabi架构的.so文件而忽略其他ABIs的83
第8章 Gradle必知必会85
8.1 共享变量的定义85
8.2 通用配置87
8.3 aar函数库的引用88
8.4 签名和混淆的配置90
第9章 通过Gradle打包发布函数库到JCenter和Maven Central92
9.1 Maven Central和JCenter92
9.1.1 Maven Central93
9.1.2 JCenter93
9.2 Android Studio获取函数库的原理94
9.3 上传函数库到JCenter96
9.3.1 步骤一:在Bintray网站上注册一个账号96
9.3.2 步骤二:创建一个Sonatype账号96
9.3.3 步骤三:在Bintray网站使能自动签名97
9.3.4 步骤四:生成POM相关的信息100
9.3.5 步骤五:上传函数库到Bintray104
9.3.6 步骤六:发布Bintray用户仓库到JCenter107
9.3.7 步骤七:同步函数库到Maven Central109
第10章 Builder模式详解110
10.1 经典的Builder模式110
10.2 Builder模式的变种113
10.3 变种Builder模式的自动化生成119
10.4 开源函数库的例子122
第11章 注解在Android中的应用124
11.1 注解的定义124
11.2 标准注解125
11.2.1 编译相关注解125
11.2.2 资源相关注解125
11.2.3 元注解125
11.3 运行时注解127
11.4 编译时注解127
11.4.1 定义注解处理器127
11.4.2 注册注解处理器131
11.4.3 android-apt插件132
第12章 ANR产生的原因及其定位分析134
12.1 ANR产生的原因135
12.2 典型的ANR问题场景135
12.3 ANR的定位和分析136
12.3.1 Logcat日志信息136
12.3.2 traces.txt日志信息138
12.4 ANR的避免和检测141
12.4.1 StrictMode141
12.4.2 BlockCanary142
第13章 Android异步处理技术144
13.1 Thread144
13.2 HandlerThread146
13.3 AsyncQueryHandler149
13.4 IntentService150
13.5 Executor Framework153
13.6 AsyncTask155
13.7 Loader156
13.8 总结159
第14章 Android数据序列化方案研究160
14.1 Serializable160
14.2 Parcelable166
14.3 SQLiteDatabase169
14.4 SharedPreferences170
14.5 JSON171
14.6 Protocol Buffers及Nano-Proto-Buffers171
14.7 FlatBuffers171
第15章 Android WebView Java和JavaScript交互详解173
15.1 Java调用JavaScript173
15.2 JavaScript调用Java174
第2篇 系统架构篇180
第16章 MVP模式及其在Android中的实践180
16.1 MVP的基本概念180
16.2 MVP与MVC的区别181
16.3 MVP的开源实现182
16.3.1 Android-Architecture182
16.3.2 TODO-MVP182
16.3.3 TODO-MVP-Loaders183
16.3.4 TODO-MVP-Clean183
16.3.5 TODO-Databinding184
16.3.6 其他开源参考实现184
16.4 MVP的好处185
16.5 MVP存在的问题185
第17章 MVVM模式及Android DataBinding实战186
17.1 Data Binding表达式187
17.2 数据对象188
17.3 数据绑定188
17.4 事件绑定189
第18章 观察者模式的拓展:事件总线191
18.1 为何要使用191
18.2 原理192
18.3 开源实现193
18.3.1 EventBus193
18.3.2 otto194
18.4 与观察者模式及Android广播的区别196
第19章 书写简洁规范的代码197
19.1 Java编码规范197
19.1.1 源代码文件的定义197
19.1.2 源代码文件的结构197
19.1.3 遵循的格式198
19.1.4 命名约定200
19.1.5 Javadoc200
19.2 Android命名规范200
19.2.1 布局文件的命名200
19.2.2 资源文件的命名201
19.2.3 类的命名201
19.3 CheckStyle的使用202
第20章 基于开源项目搭建属于自己的技术堆栈203
20.1 APP的整体架构203
20.2 技术选型的考量点205
20.3 日志记录能力205
20.4 JSON解析能力207
20.4.1 gson207
20.4.2 jackson207
20.4.3 Fastjson208
20.4.4 LoganSquare208
20.5 数据库操作能力210
20.5.1 ActiveAndroid210
20.5.2 ormlite211
20.5.3 greenDAO211
20.5.4 Realm212
20.6 网络通信能力213
20.6.1 android-async-http213
20.6.2 OkHttp215
20.6.3 Volley216
20.6.4 Retrofit217
20.7 图片缓存和显示能力217
20.7.1 BitmapFun218
20.7.2 Picasso218
20.7.3 Glide218
20.7.4 Fresco219
20.7.5 Android-Universal-Image-Loader219
第3篇 经验总结篇222
第21章 64K方法数限制原理与解决方案222
21.1 64K限制的原因222
21.2 使用MultiDex解决64K限制的问题223
21.2.1 Android 5.0之前的版本223
21.2.2 Android 5.0及之后的版本223
21.3 如何避免出现64K限制223
21.4 配置MultiDex224
21.5 MultiDex Support Library的局限性226
21.6 在开发阶段优化MultiDex的构建227
第22章 Android插件框架机制研究与实践230
22.1 基本概念231
22.1.1 宿主和插件231
22.1.2 ClassLoader机制231
22.2 开源框架231
22.2.1 android-pluginmgr232
22.2.2 dynamic-load-apk232
22.2.3 DynamicAPK232
22.2.4 DroidPlugin233
22.2.5 Small234
第23章 推送机制实现原理详解235
23.1 推送的开源实现方案236
23.1.1 基于XMPP协议236
23.1.2 基于MQTT协议236
23.2 推送的第三方平台236
23.3 自己实现推送功能237
23.3.1 长连接的建立(TCPConnectThread)237
23.3.2 数据的发送(TCPSendThread)237
23.3.3 数据的接收(TCPReceiveThread)238
23.3.4 心跳包的实现(TCPHeartBeatThread)240
第24章 APP瘦身经验总结241
24.1 APP为什么变胖了241
24.2 从APK文件的结构说起242
24.3 优化图片资源占用的空间245
24.3.1 无损压缩[ImageOptim]246
24.3.2 有损压缩[ImageAlpha]246
24.3.3 有损压缩[TinyPNG]246
24.3.4 PNG/JPEG转换为WebP246
24.3.5 尽量使用NinePatch格式的PNG图247
24.4 使用Lint删除无用资源248
24.5 利用Android Gradle配置248
24.5.1 minifyEnable248
24.5.2 shrinkResources249
24.5.3 resConfigs249
24.5.4 ndk.abiFilters250
24.6 重构和优化代码250
24.7 资源混淆251
24.8 插件化251
第25章 Android Crash日志收集原理与实践252
25.1 Java层Crash捕获机制253
25.1.1 基本原理253
25.1.2 线程信息254
25.1.3 SharedPreference信息255
25.1.4 系统设置257
21.1.5 Logcat中的日志记录261
25.1.6 自定义Log文件中的内容264
25.1.7 MemInfo信息266
25.2 Native层Crash捕获机制267
25.3 Crash的上报269
第4篇 新技术篇272
第26章 函数式编程思想及其在Android中的应用272
26.1 代码的简化274
26.2 Operators简介275
第27章 依赖注入及其在Android中的应用277
27.1 基本概念277
27.1.1 构造函数注入278
27.1.2 Setter函数注入279
27.1.3 接口注入279
27.2 为何需要框架280
27.3 开源框架的选择280
27.3.1 ButterKnife280
27.3.2 RoboGuice282
27.3.3 Dagger285
27.3.4 Dagger2288
27.3.5 框架的对比289
第28章 Android世界的Swift:Kotlin在Android中的应用290
28.1 选择Kotlin的原因290
28.2 Kotlin的安装和配置291
28.3 Kotlin语言的特性292
28.3.1 可表达性292
28.3.2 空类型安全294
28.3.3 扩展函数295
28.4 Kotlin的Gradle配置296
28.5 将Java类转换成Kotlin类299
28.6 相关资料302
第29章 React Native For Android入门指南304
29.1 环境配置304
29.1.1 Homebrew304
29.1.2 nvm305
29.1.3 Node.js305
29.1.4 watchman306
29.1.5 flow306
29.2 Android开发环境的要求306
29.3 React Native工程配置307
29.3.1 安装react-native307
29.3.2 生成工程307
29.4 Android Studio工程概览308
29.5 React Native依赖库修改为本地314
29.5.1 下载react-native.aar314
29.5.2 react-native.aar的文件内容315
29.5.3 Gradle本地依赖316
29.5.4 将node_modules上传到svn/git318
29.6 React Native学习建议319
第30章 Android在线热修复方案研究320
30.1 在线热修复的基本流程320
30.2 Dexposed321
30.2.1 如何集成322
30.2.2 基本用法323
30.2.3 在线热修复325
30.2.4 平台的限制328
30.3 AndFix329
30.3.1 如何集成329
30.3.2 补丁包生成工具331
30.3.3 平台的限制332
30.4 Nuwa332
30.4.1 基本原理332
30.4.2 如何集成333
30.4.3 补丁生成工具334
30.4.4 平台的限制334
30.5 总结334
第31章 面向切面编程及其在Android中的应用335
31.1 AOP的基本概念335
31.2 代码织入的时机336
31.3 基于AspectJ实现Android平台的AOP337
31.3.1 Hugo的用法简介337
31.3.2 Hugo的实现原理339
31.4 其他AOP开源框架344
第32章 基于Facebook Buck改造Android构建系统345
32.1 Buck环境配置346
32.1.1 Homebrew方式346
32.1.2 手动构建方式346
32.1.3 安装Watchman348
32.1.4 安装Android SDK和Android NDK348
32.2 快速创建基于Buck构建的Android工程349
32.3 Buck的基本概念351
32.3.1 构建规则(Build Rule)352
32.3.2 构建目标(Build Target)354
32.3.3 构建文件(Build File)355
32.3.4 构建目标模式(Build Target Pattern)356
32.4 项目改造实战357
32.4.1 步骤一:手动下载工程依赖的第三方Jar包或者aar包357
32.4.2 步骤二:将R.*常量修改为非final的357
32.4.3 步骤三:创建BUCK文件358
32.4.4 步骤四:编译Buck的buck-android-support363
32.4.5 步骤五:Exopackage的使用363
32.5 Buck的自动化改造366
第5篇 性能优化篇368
第33章 代码优化368
33.1 数据结构的选择368
33.2 Handler和内部类的正确用法370
33.3 正确地使用Context373
33.3.1 Context的种类374
33.3.2 错误使用Context导致的内存泄漏374
33.3.3 不同Context的对比376
33.4 掌握Java的四种引用方式376
33.5 其他代码微优化377
33.5.1 避免创建非必要的对象377
33.5.2 对常量使用static final修饰378
33.5.3 避免内部的Getters/Setters378
33.5.4 代码的重构378
第34章 图片优化379
34.1 图片的格式379
34.1.1 JPEG380
34.1.2 PNG380
34.1.3 GIF380
34.1.4 WebP380
34.2 图片的压缩380
34.2.1 无损压缩ImageOptim381
34.2.2 有损压缩ImageAlpha381
34.2.3 有损压缩TinyPNG381
34.2.4 PNG/JPEG转换为WebP381
34.2.5 尽量使用NinePatch格式的PNG图382
34.3 图片的缓存382
第35章 电量优化383
35.1 BroadcastReceiver383
35.2 数据传输384
35.3 位置服务384
35.4 AlarmManager386
35.5 WakeLock386
第36章 布局优化388
36.1 include标签共享布局388
36.2 ViewStub标签实现延迟加载389
36.3 merge标签减少布局层次391
36.4 尽量使用CompoundDrawable392
36.5 使用Lint393
第37章 网络优化395
37.1 避免DNS解析395
37.2 合并网络请求395
37.3 预先获取数据396
37.4 避免轮询396
37.5 优化重连机制396
37.6 离线缓存396
37.7 压缩数据大小396
37.8 不同的网络环境使用不同的超时策略397
37.9 CDN的使用397
第6篇 移动安全篇400
第38章 Android混淆机制详解400
38.1 Java代码的混淆400
38.1.1 Proguard的特性401
38.1.2 Proguard的使能和配置401
38.1.3 proguard-rules.pro文件的编写404
38.1.4 Proguard生成的文件407
38.1.5 Proguard混淆规则汇总409
38.2 Native(C/C++)代码的混淆409
38.3 资源文件的混淆409
第39章 Android反编译机制详解411
39.1 资源文件的反编译411
39.1.1 ApkTool的安装411
39.1.2 ApkTool的使用412
39.2 Java代码的反编译413
第40章 客户端敏感信息隐藏技术研究414
40.1 敏感信息嵌套在strings.xml中415
40.2 敏感信息隐藏在Java源代码中415
40.3 敏感信息隐藏在BuildConfig中417
40.4 使用DexGuard418
40.5 对敏感信息进行伪装或者加密419
40.6 敏感信息隐藏在原生函数库中(.so文件)419
40.7 对APK进行加固处理419
第41章 Android加固技术研究421
41.1 爱加密的主要功能421
41.1.1 漏洞分析421
41.1.2 加密服务422
41.1.3 渠道监测423
41.2 常见APP漏洞及风险423
41.2.1 静态破解423
41.2.2 二次打包424
41.2.3 本地储存数据窃取424
41.2.4 界面截取424
41.2.5 输入法攻击424
41.2.6 协议抓取424
41.3 Android程序反破解技术424
41.3.1 对抗反编译424
41.3.2 对抗静态分析425
41.3.3 对抗动态调试425
41.3.4 防止重编译425
41.4 加固技术研究知识储备426
41.4.1 掌握常见的破解分析工具426
41.4.2 掌握Dalvik指令集代码428
41.4.3 掌握Dex和Odex文件格式428
41.4.4 掌握Smali文件格式428
41.4.5 掌握基于Android的ARM汇编语言基础428
第42章 Android安全编码429
42.1 WebView远程代码执行429
42.2 WebView密码明文保存430
42.3 Android本地拒绝服务431
42.3.1 非法序列化对象导致的ClassNotFoundException431
42.3.2 空Action导致的NullPointerException432
42.3.3 强制类型转换导致的ClassCastException433
42.3.4 数组越界导致的IndexOutOfBoundsException433
42.4 SharedPreference全局任意读写434
42.5 密钥硬编码434
42.6 AES/DES/RSA弱加密434
42.7 随机函数使用错误437
42.8 WebView忽略SSL证书438
42.9 HTTPS证书弱校验438
42.9.1 自定义X509TrustManager未实现安全校验438
42.9.2 自定义HostnameVerifier默认接受所有域名441
42.9.3 SSLSocketFactory信任所有证书442
42.10 PendingIntent使用不当443
第7篇 工具篇446
第43章 Android调试工具Facebook Stetho446
43.1 视图布局监视447
43.2 数据库监视447
43.3 网络监视448
43.3.1 网络模块使用的是HTTPUrlConnection449
43.3.2 网络模块使用的是OkHttp452
43.4 dumpapp454
43.4.1 插件的编写454
43.4.2 插件的集成456
43.4.3 插件的使用456
43.5 Javascript控制台457
43.6 最佳实践457
第44章 内存泄漏检测函数库LeakCanary460
44.1 基本概念461
44.2 LeakCanary的集成461
44.3 LeakCanary的原理465
44.4 LeakCanary的定制469
44.4.1 RefWatcher的自定义469
44.4.2 通知页面样式的自定义470
44.4.3 内存泄漏堆栈信息保存个数的自定义471
44.4.4 Watcher的延时471
44.4.5 自定义内存泄漏堆栈信息和heap dump的处理方式471
44.4.6 忽略特定的弱引用472
44.4.7 不监视特定的Activity类472
第45章 基于Facebook Redex实现Android APK的压缩和优化474
45.1 转换的时机474
45.2 管道的思想475
45.3 减少字节码的意义475
45.4 混淆和压缩475
45.5 使用内联函数476
45.6 无用代码的消除477
45.7 Redex的集成和使用478
45.7.1 依赖的安装478
45.7.2 下载,构建和安装478
45.7.3 使用478
第46章 Android Studio你所需要知道的功能479
46.1 Annotate479
46.2 .ignore插件480
46.3 Live Templates481
46.4 集成Bug管理系统482
第8篇 测试篇486
第47章 Android单元测试框架简介486
47.1 Java单元测试框架JUnit486
47.2 Android单元测试框架Robolectric 3.0488
47.3 Java模拟测试框架Mockito490
47.3.1 行为的验证490
47.3.2 Stub(桩函数)的使用491
第48章 Android UI自动化测试框架简介492
48.1 Monkey492
48.2 MonkeyRunner493
48.3 UIAutomator493
48.4 Robotium494
48.5 Espresso494
48.6 Appium494
第49章 Android静态代码分析实战495
49.1 Java代码规范检查工具CheckStyle495
49.1.1 Gradle方式495
49.1.2 Android Studio插件方式497
49.2 Java静态代码分析工具FindBugs498
49.2.1 Gradle方式498
49.2.2 Android Studio插件方式499
49.3 Java静态代码分析工具PMD500
49.3.1 Gradle方式500
49.3.2 Android Studio插件方式501
49.4 Android代码优化工具Lint501
49.4.1 Gradle方式501
49.4.2 Android Studio插件方式502
第50章 基于Jenkins+Gradle搭建Android持续集成编译环境503
50.1 Tomcat的下载和启动503
50.2 Jenkins的下载和运行505
50.3 Jenkins插件的安装506
50.4 Jenkins全局配置507
50.4.1 配置JDK环境507
50.4.2 配置Android SDK环境507
50.4.3 配置Git环境508
50.4.4 配置SVN环境508
50.4.5 配置Gradle环境508
50.5 JOB相关的操作508
50.5.1 JOB的创建508
50.5.2 JOB的配置509
50.5.3 Gradle的配置510
50.5.4 构建触发器的配置511
50.5.5 参数化构建514
50.6 Jenkins预定义的环境变量514
热门推荐
- 1930130.html
- 3165040.html
- 1622510.html
- 1534577.html
- 2456294.html
- 1651966.html
- 1096853.html
- 1175250.html
- 2570047.html
- 2684909.html
- http://www.ickdjs.cc/book_2516236.html
- http://www.ickdjs.cc/book_975838.html
- http://www.ickdjs.cc/book_2006201.html
- http://www.ickdjs.cc/book_1990531.html
- http://www.ickdjs.cc/book_1913878.html
- http://www.ickdjs.cc/book_1391260.html
- http://www.ickdjs.cc/book_521425.html
- http://www.ickdjs.cc/book_815415.html
- http://www.ickdjs.cc/book_3074526.html
- http://www.ickdjs.cc/book_573091.html