是一款由资深技术专家顾浩鑫精心编著的Android高级进阶指南,书中不仅凝聚了作者丰富的实战经验,还融合了其在华为、百度、平安科技等顶级科技公司的深厚积累,为读者呈现了一部深入浅出、实战价值极高的Android开发宝典。全书共分为八大章节,从基础篇到移动安全篇,每一部分都精心设计,旨在全面覆盖Android开发者从入门到精通的全过程。- **基础篇**:从零开始,逐步构建坚实的Android开发基础,包括环境搭建、基本组件使用等。- **系统架构篇**:深入剖析Android系统的内部结构和工作原理,帮助开发者理解并掌握系统层面的设计与实现。- **经验总结篇**:基于作者多年一线开发经验,分享实用技巧和常见问题解决方案,助力开发者避免常见陷阱。- **新技术篇**:紧跟行业潮流,介绍最新Android技术动态和开发工具,引领开发者探索前沿技术。- **性能优化篇**:提供详尽的性能优化策略和实践案例,帮助开发者提升应用运行效率和用户体验。- **移动安全篇**:强调移动应用安全的重要性,讲解安全防护措施和常见漏洞防范策略,保护用户数据安全。- **工具篇**:推荐一系列高效开发工具和框架,提升开发效率,让开发者能够更加专注于创新。- **测试篇**:全面覆盖自动化测试、性能测试等关键环节,确保应用质量,提高用户满意度。本书不仅是一本技术手册,更是Android开发者成长之路的伙伴,通过深入浅出的讲解和丰富案例分析,帮助每一位开发者在Android领域不断精进,实现技术梦想。
顾浩鑫,网络ID:ASCEl885,平安金融科技移动研发工程师,目前主要从事AndroidReactNative丰目关研发工作,毕业于华中科技大学图像识别与人工智能研究所,曾先后就职于华为、百度、平安科技。
顾浩鑫所著的Android高级进阶是Android的进阶学习指南,主要为Android初中级开发者进阶所需的知识,高级开发者也可以从本书中发现很多共鸣点。本书从8个方面对50个知识点进行分类讲解,包括基础篇、系统架构篇、经验总结篇、新技术篇、性能优化篇、移动安全篇、工具篇、测试篇。
熟练掌握这些知识点后,应该就能够应付实际项目开发中的大部分问题了。本书的主要目的在于给读者一个完整的Android中高级开发者知识图谱。笔者希望通过本书的系统讲解,能够帮助读者在面试和工作中收获自己满意的成绩。
下载并解压,得出pdf文件
如果打不开本文件,请务必下载pdf阅读器
安装后,在打开解压得出的pdf文件
双击进行阅读
第1篇u3000基础篇
事件传递的三个阶段3
View的事件传递机制4
ViewGroup的事件传递机制10
第2章u3000AndroidView的绘制流程16
绘制的整体流程17
MeasureSpec17
Measure19
Layout22
Draw22
第3章u3000Android动画机制25
逐帧动画FrameAnimation25
XML资源文件方式25
代码方式26
补间动画TweenAnimation27
AlphaAnimation29
ScaleAnimation30
TranslateAnimation31
RotateAnimation32
自定义补间动画34
属性动画PropertyAnimation34
Evaluator35
AnimatorSet36
ValueAnimator36
ObjectAnimator38
过渡动画TransitionAnimation40
第4章u3000SupportAnnotationLibrary使用详解46
Nullness注解47
资源类型注解48
类型定义注解50
线程注解52
RGB颜色值注解52
值范围注解53
权限注解53
重写函数注解54
返回值注解55
VisibleForTesting55
Keep55
第5章u3000PercentSupportLibrary使用详解57
第6章u3000DesignSupportLibrary使用详解62
Snackbar62
TextInputLayout63
TabLayout64
NavigationView65
导航菜单66
导航头部67
FloatingActionButton70
使用浮动操作按钮70
其他选项71
点击事件71
CoordinatorLayout72
CollapsingToolbarLayout73
BottomSheetBehavior75
第7章u3000AndroidStudio中的NDK开发77
ABI的基本概念77
引入预编译的二进制C/C++函数库79
直接从C/C++源码编译79
配置变量79
在Gradle中配置NDK模块79
添加C/C++文件到指定的目录81
so文件的注意事项81
使用高平台版本编译的.so文件运行在低版本的设备上81
混合使用不同的C++运行时编译的.so文件82
没有为每个支持的CPU架构提供对应的.so文件82
so文件放在错误的地方82
只提供armeabi架构的.so文件而忽略其他ABIs的83
第8章u3000Gradle必知必会85
共享变量的定义85
通用配置878.3u3000aar函数库的引用88
签名和混淆的配置90
第9章u3000通过Gradle打包发布函数库到JCenter和MavenCentral929.1u3000MavenCentral和JCenter92
MavenCentral93
JCenter93
AndroidStudio获取函数库的原理94
上传函数库到JCenter96
步骤二:创建一个Sonatype账号96
步骤四:生成POM相关的信息100
步骤五:上传函数库到Bintray104
步骤六:发布Bintray用户仓库到JCenter107
步骤七:同步函数库到MavenCentral109
第10章u3000Builder模式详解110
经典的Builder模式110
Builder模式的变种113
变种Builder模式的自动化生成119
开源函数库的例子122
第11章u3000注解在Android中的应用124
注解的定义124
标准注解125
编译相关注解125
资源相关注解125
元注解125
运行时注解127
编译时注解127
定义注解处理器127
ANR产生的原因135
典型的ANR问题场景135
Logcat日志信息136
日志信息138
ANR的避免和检测141
StrictMode141
BlockCanary142
第13章u3000Android异步处理技术144
Thread144
HandlerThread146
AsyncQueryHandler149
IntentService150
ExecutorFramework153
AsyncTask155
Loader156
总结159
第14章u3000Android数据序列化方案研究160
Serializable160
Parcelable166
SQLiteDatabase169
SharedPreferences170
JSON171
ProtocolBuffers及Nano-Proto-Buffers171
FlatBuffers171
第15章u3000AndroidWebViewJava和JavaScript交互详解173
Java调用JavaScript173
JavaScript调用Java174
第2篇u3000系统架构篇
第16章u3000MVP模式及其在Android中的实践180
MVP的基本概念180
MVP与MVC的区别181
MVP的开源实现182
Android-Architecture182
TODO-MVP182
TODO-MVP-Loaders183
TODO-MVP-Clean183
TODO-Databinding184
其他开源参考实现184
MVP的好处185
MVP存在的问题185
第17章u3000MVVM模式及AndroidDataBinding实战186
DataBinding表达式187
数据对象188
数据绑定188
事件绑定189
原理192
开源实现193
EventBus193
otto194
与观察者模式及Android广播的区别196
第19章u3000书写简洁规范的代码197
Java编码规范197
源代码文件的定义197
源代码文件的结构197
遵循的格式198
命名约定200
Javadoc200
Android命名规范200
布局文件的命名200
资源文件的命名201
类的命名201
CheckStyle的使用202
第20章u3000基于开源项目搭建属于自己的技术堆栈203
APP的整体架构203
技术选型的考量点205
日志记录能力205
JSON解析能力207
gson207
jackson207
Fastjson208
LoganSquare208
数据库操作能力210
ActiveAndroid210
ormlite211
greenDAO211
Realm212
网络通信能力213
android-async-http213
OkHttp215
Volley216
Retrofit217
BitmapFun218
Picasso218
Glide218
Fresco219
Android-Universal-Image-Loader219
第3篇u3000经验总结篇
第21章u300064K方法数限制原理与解决方案222
64K限制的原因222
使用MultiDex解决64K限制的问题223
Android5.0之前的版本223
Android5.0及之后的版本223
如何避免出现64K限制223
配置MultiDex224
MultiDexSupportLibrary的局限性226
在开发阶段优化MultiDex的构建227
基本概念231
ClassLoader机制231
开源框架231
android-pluginmgr232
dynamic-load-apk232
DynamicAPK232
DroidPlugin233
Small234
第23章u3000推送机制实现原理详解235
推送的开源实现方案236
基于XMPP协议236
基于MQTT协议236
推送的第三方平台236
自己实现推送功能237
长连接的建立TCPConnectThread237
数据的发送TCPSendThread237
数据的接收TCPReceiveThread238
心跳包的实现TCPHeartBeatThread240
第24章u3000APP瘦身经验总结241
APP为什么变胖了241
从APK文件的结构说起242
无损压缩ImageOptim246
有损压缩ImageAlpha246
有损压缩TinyPNG246
PNG/JPEG转换为WebP246
尽量使用NinePatch格式的PNG图247
使用Lint删除无用资源248
利用AndroidGradle配置248
minifyEnable248
shrinkResources249
resConfigs249
重构和优化代码250
资源混淆251
第25章u3000AndroidCrash日志收集原理与实践252
Java层Crash捕获机制253
基本原理253
线程信息254
SharedPreference信息255
系统设置257
Logcat中的日志记录261
自定义Log文件中的内容26425.1.7u3000MemInfo信息266
Native层Crash捕获机制267
Crash的上报269
第4篇u3000新技术篇
第26章u3000函数式编程思想及其在Android中的应用272
代码的简化274
Operators简介275
第27章u3000依赖注入及其在Android中的应用277
基本概念277
构造函数注入278
Setter函数注入279
接口注入279
为何需要框架280
开源框架的选择280
ButterKnife280
RoboGuice282
Dagger285
Dagger2288
框架的对比289
第28章u3000Android世界的Swift:Kotlin在Android中的应用290
选择Kotlin的原因290
Kotlin语言的特性292
可表达性292
空类型安全294
扩展函数295
Kotlin的Gradle配置296
将Java类转换成Kotlin类299
第29章u3000ReactNativeForAndroid入门指南304
环境配置304
Homebrew304
nvm305
watchman306
flow306
Android开发环境的要求306
ReactNative工程配置307
安装react-native307
生成工程307
AndroidStudio工程概览308
ReactNative依赖库修改为本地314
的文件内容315
Gradle本地依赖316
将node_modules上传到svn/git318
ReactNative学习建议319
Dexposed321
如何集成322
基本用法323
平台的限制328
AndFix329
如何集成329
补丁包生成工具331
平台的限制332
Nuwa332
基本原理332
如何集成333
补丁生成工具334
平台的限制334
总结334
第31章u3000面向切面编程及其在Android中的应用335
AOP的基本概念335
代码织入的时机336
基于AspectJ实现Android平台的AOP337
Hugo的用法简介337
Hugo的实现原理339
其他AOP开源框架344
第32章u3000改造Android构建系统345
Buck环境配置346
Homebrew方式346
手动构建方式346
安装Watchman348
安装AndroidSDK和AndroidNDK348
快速创建基于Buck构建的Android工程349
Buck的基本概念351
构建规则BuildRule352
构建目标BuildTarget354
构建文件BuildFile355
构建目标模式BuildTargetPattern356
项目改造实战357
步骤一:手动下载工程依赖的第三方Jar包或者aar包357
步骤二:将R.*常量修改为非final的357
步骤三:创建BUCK文件358
步骤四:编译Buck的buck-android-support363
步骤五:Exopackage的使用363
Buck的自动化改造366
第5篇u3000性能优化篇
第33章u3000代码优化368
数据结构的选择368
Handler和内部类的正确用法370
正确地使用Context373
Context的种类374
错误使用Context导致的内存泄漏374
不同Context的对比376
掌握Java的四种引用方式376
其他代码微优化377
避免创建非必要的对象377
对常量使用staticfinal修饰378
避免内部的Getters/Setters378
代码的重构378
JPEG380
PNG380
GIF380
WebP380
无损压缩ImageOptim381
有损压缩ImageAlpha381
有损压缩TinyPNG381
PNG/JPEG转换为Web381
尽量使用NinePatch格式的PNG图382
第35章u3000电量优化383
BroadcastReceiver383
数据传输384
位置服务384
AlarmManager386
WakeLock386
第36章u3000布局优化38836.1u3000include标签共享布局388
ViewStub标签实现延迟加载389
尽量使用CompoundDrawable392
使用Lint393
第37章u3000网络优化395
避免DNS解析395
合并网络请求395
预先获取数据396
避免轮询396
优化重连机制396
离线缓存396
压缩数据大小396
不同的网络环境使用不同的超时策略397
CDN的使用397
第6篇u3000移动安全篇
第38章u3000Android混淆机制详解400
Java代码的混淆400
Proguard的特性401
Proguard的使能和配置401
文件的编写404
Proguard生成的文件407
Proguard混淆规则汇总409
NativeC/C++代码的混淆409
资源文件的混淆409
第39章u3000Android反编译机制详解411
资源文件的反编译411
ApkTool的安装411
ApkTool的使用412
Java代码的反编译413
使用DexGuard418
对APK进行加固处理419
第41章u3000Android加固技术研究421
爱加密的主要功能421
漏洞分析421
加密服务422
渠道监测423
常见APP漏洞及风险423
静态破解423
二次打包424
本地储存数据窃取424
界面截取424
输入法攻击424
协议抓取424
Android程序反破解技术424
对抗反编译424
对抗静态分析425
对抗动态调试425
防止重编译425
加固技术研究知识储备426
掌握常见的破解分析工具426
掌握Dalvik指令集代码428
掌握Dex和Odex文件格式428
掌握Smali文件格式428
掌握基于Android的ARM汇编语言基础428
第42章u3000Android安全编码429
WebView远程代码执行429
WebView密码明文保存430
Android本地拒绝服务431
非法序列化对象导致的ClassNotFoundException431
空Action导致的NullPointerException432
强制类型转换导致的ClassCastException433
数组越界导致的IndexOutOfBoundsException433
SharedPreference全局任意读写434
密钥硬编码434
AES/DES/RSA弱加密434
随机函数使用错误437
WebView忽略SSL证书438
HTTPS证书弱校验438
自定义X509TrustManager未实现安全校验438
自定义HostnameVerifier默认接受所有域名441
SSLSocketFactory信任所有证书442
PendingIntent使用不当443
第7篇u3000工具篇
第43章u3000Android调试工具446
视图布局监视447
数据库监视447
网络监视448
网络模块使用的是HTTPUrlConnection449
网络模块使用的是OkHttp452
dumpapp454
Javascript控制台457
最佳实践457
第44章u3000内存泄漏检测函数库LeakCanary460
基本概念461
LeakCanary的集成461
LeakCanary的原理465
LeakCanary的定制469
RefWatcher的自定义469
内存泄漏堆栈信息保存个数的自定义471
Watcher的延时471
自定义内存泄漏堆栈信息和heapdump的处理方式471
忽略特定的弱引用472
不监视特定的Activity类472
第45章u3000基于Redex实现AndroidAPK的压缩和优化474
转换的时机474
管道的思想475
减少字节码的意义475
混淆和压缩475
使用内联函数476
无用代码的消除477
Redex的集成和使用478
依赖的安装478
构建和安装478
使用478
第46章u3000AndroidStudio你所需要知道的功能479
Annotate479
LiveTemplates481
集成Bug管理系统482
第8篇u3000测试篇
第47章u3000Android单元测试框架简介486
Java单元测试框架JUnit486
Android单元测试框架Robolectric3.0488
Java模拟测试框架Mockito490
行为的验证490
第48章u3000AndroidUI自动化测试框架简介492
Monkey492
MonkeyRunner493
UIAutomator493
Robotium494
Espresso494
Appium494
第49章u3000Android静态代码分析实战495
Java代码规范检查工具CheckStyle495
Gradle方式495
Java静态代码分析工具FindBugs498
Gradle方式498
Java静态代码分析工具PMD500
Gradle方式500
Android代码优化工具Lint501
Gradle方式501
Tomcat的下载和启动503
配置JDK环境507
配置AndroidSDK环境507
配置Git环境508
配置SVN环境508
配置Gradle环境508
JOB相关的操作508
JOB的创建508
JOB的配置509
Gradle的配置510
构建触发器的配置511
参数化构建514
熊猫拼音电视版
23.51MB | 生活服务
熊猫拼音电视版
国学大王TV版
20.49MB | 生活服务
国学大王TV版
雨时天气app
24.64MB | 生活服务
雨时天气app
WPSOffice2019精简
40.18MB | 生活服务
WPSOffice2019精简
宝宝快乐加减法TV版
180.4MB | 生活服务
宝宝快乐加减法TV版
漫想世界
64.15MB | 生活服务
漫想世界
飞书会议室
181.72MB | 生活服务
飞书会议室
数据恢复精灵
18.76MB | 生活服务
数据恢复精灵
查妆美妆鉴别app
6.51MB | 生活服务
查妆美妆鉴别app
猪迪克识字卡TV版
73.09MB | 生活服务
猪迪克识字卡TV版