当前位置: 055玩 >  安卓 >  Android高级进阶
Android高级进阶

Android高级进阶

android

语言:中文 类型:生活服务 版本: v1.1 游戏大小: 3.91MB 更新时间:2024-08-29 07:00:18

是一款由资深技术专家顾浩鑫精心编著的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

游戏信息
  • 系统要求:安卓4.1以上
  • 支持语言:简体中文
  • 包名:com.example.android_demo2
  • MD5:adfdf2850932d5134179ba744527349e
专题推荐/ TAG Q&A +更多