书籍作者:胡强 | ISBN:9787121372063 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:3195 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
本书是一本Android进阶技术与实践应用相结合的书籍,主要从3个方面来组织内容。**个方面,Android工程构建体系实践与进阶,其中不仅包含了移动数据技术、工具基建进阶、效能进阶,还包含了工具应用进阶、工程构建进阶等内容;第二个方面,对当前移动端前沿技术的探索,包含容器技术、大前端技术和AI技术;第三个方面,移动应用的安全攻防技术和设计模式进阶实践。本书内容全面,侧重实战经验和进阶技能,通过本书不仅能学到*新的移动端技术,以及进阶技术与实践应用相结合的知识,更重要的是能领悟到作者对技术的钻研精神和思维方式,从而帮助Android开发者高效进阶。本书适合移动应用开发者、Android系统开发人员、Android系统安全工程师,以及Android领域的移动技术负责人阅读。
胡强(花名:得塔),阿里巴*高级无线技术专家(P8),进入互联网行业已10年,先后从事过前端、后端、大数据和移动互联网的架构及研发工作。2014年加入阿里巴*至今,专注于移动互联网技术,先后主导了UC和豌豆荚的架构设计,并先后应邀在GMTC、云栖大会、架构师私享会、GeekPwn和Google Lab等上进行过技术演讲和交流。
1 业内专家刘望舒、张鸿洋、黄闻欣联袂力荐。
2 这是一本Android进阶技术与实践应用相结合的书籍,介绍了Android工程构建体系实践与进阶、对当前移动端前沿技术的探索,以及移动应用的安全攻防技术和设计模式进阶实践。
3 《Android高效进阶:从数据到AI》内容全面,侧重实战经验和进阶技能,包含作者多年累积的经验以及思维方式,可以帮助Android开发者高效进阶。
4 《Android高效进阶:从数据到AI》适合移动应用开发者、Android系统开发人员、Android系统安全工程师,以及Android领域的移动技术负责人阅读。
推荐序一
胡强是我的好友,我们相识于5年前的一次业务合作,短暂的接触后我就深深地感受到了胡强的不简单:深厚的技术功底、极致的业务思维和谦逊的工作态度。当时我就认定这个小伙子一定会有所成就、大放异彩。
胡强当前所在的业务领域是App发行,随着硬核手机厂商的日益崛起,以及各大超级App的流量垄断,第三方应用商店可谓勉强在夹缝中求生存。在巨大的竞争压力下,胡强带领的Android研发团队没有轻言放弃,反倒韧性十足,积极探索,通过对各种渠道技术的创新为业务赋能,成功走出了一条技术驱动业务增长的实践之路,其中有不少核心技术也被阿里集团内多个业务单元广为采用并深受好评。
听闻胡强想要把他这几年在Android领域的技术沉淀和业务实践经验整理成书时,我内心的敬佩和欣喜之情油然而生,敬佩于胡强的分享精神,欣喜于好友的心愿得偿。同时,我也为广大Android研发人员感到开心。Android发展至今已非常成熟,相关书籍可谓琳琅满目,但讲解技术创新和应用实践的好书却凤毛麟角,这本书就是这样的一本好书,它将注定如胡强一般与众不同。本书内容围绕技术进阶和业务实践展开,涵盖了移动数据技术、基础工具的建设、移动混合前端、效能开发、安全攻防和移动AI的落地等多个实用的进阶主题,干货满满,是作者厚积薄发的心血之作。这本书不是Android入门书籍,需要读者具备一定的Android开发基础和工程经验,否则读起来会比较吃力,且难以体会本书的妙处所在。但对于想成长为高级或资深Android工程师的朋友来说,书中的知识都是非常有用、值得深究的。
最后,希望各位读者能够从此书获益,接触到一些工作中未曾了解或思考过的知识点,为各位的技术进阶带来助益和启发。更进一步,希望读者能够举一反三,学习作者的钻研精神和创新思维,并在工作中积极实践。
阿里游戏大数据部门前技术负责人,高级技术专家(P8)
飞美网络CTO
贺永明
推荐序二
与强哥在阿里巴巴共事多年,他是一个让我敬佩的朋友。在技术上,他不仅进步神速,精于钻研,对Android底层实现及背后理念理解得很透彻,而且善于思考,能从大量的实战经验中总结、提炼出最本质、最核心的知识和技能。另外,他作为团队的负责人,在阿里巴巴的工作相当繁重,但还能利用有限的业余时间使本书成型,其背后的付出令人钦佩。
本书内容全面,偏实战经验和进阶技能,其中不仅包含了Android开发工程构建体系的知识、数据驱动理念和效能进阶,还包含了工具类应用的基础技术和设施打造等内容。更进一步地,本书还对移动端开发目前特别火热的技术方向进行了探索,比如,书中对容器技术、大前端技术、AI技术等都有深入阐述。此外,在安全攻防技术和设计模式方面,作者也积累了非常丰富的经验,这些内容也在本书中有所呈现。
本书凝聚了作者大量实战经验的结晶,书中不仅有非常多深入且接地气的技术内容,而且有作者多年在“大厂”带团队摸爬滚打、千锤百炼出来的对于移动端技术走向的深入思考和展望。无论对初入职场的新人,还是对有较多行业经验但遇到发展瓶颈及困惑,期望进一步突破的开发者来说,本书都值得一读。通过本书读者不仅可以学习一些新的知识和技能,更重要的是还能领悟到作者对技术的极致追求精神和思维方式。
阿里巴巴资深无线技术专家(P9)
阿里巴巴自研内核负责人
李英各
前言
2008年,Google在I/O大会上发布了Android 1.0版本,到现在已经过去了十多个年头,当前市面上Android的主流版本是Android P(9.0),而Android Q(10.0)很快也将全面铺开。目前,无论在国际市场还是国内市场上,Android都是移动端操作系统的绝对霸主。据统计,目前Android手机的市场份额已经超过了手机整体市场份额的90%。Android能够迅猛发展,除了得益于其成熟的生态,更是因为其具有能够吸引用户的优良性能表现。Android的发展也大大带动了国内移动互联网行业的发展,每天都有新的App产生,国内的IT行业发展也走在了时代前列。
当前市面上讲解Android技术的书籍特别多,从基本的语法应用到深层的内核原理都有,其中不乏经典图书,但介绍Android进阶技术(尤其是结合应用实践)的图书并不是很多。而本书重点讲解了Android平台下的各项进阶技术及其应用实践,希望本书能让具备一定基础的读者更深入地了解Android的进阶技术,同时通过实际案例进行理解。在移动场景下,未来的技术必然是朝精细化、无界化和智能化方向发展的,因此我决定以Android为引,将自己多年的无线端从业技术经验进行总结,编写为本书。
内容导读
本书主要以移动数据技术、工具效能技术、混合前端技术、AI技术、移动安全攻防技术和设计模式为主来讲解Android平台下的高效移动技术进阶。
第1章 Android数据技术:任何App的开发一定是数据先行,数据指导工作的,本章主要从数据采集、数据绑定、数据存储和前端埋点等方面来讲解Android平台下的数据技术。
第2章 Android下的工具基建进阶:主要从下载技术、沉浸式交互、图片加载框架、进程、文件系统扫描和前置通道等方面详解Android下的工具基建进阶技术。这些工具技术虽然看似普通,但真正用好它们却需要对Android有很深入的了解。
第3章 Android下的效能进阶:主要从App的自动化性能监测、真机检测系统和APK信息一站式修改等方面来讲解Android平台下的效能进阶。在App发展到一定阶段后,必然需要进行效能进阶,本章详细说明了我们常见的性能监测、真机检测技术以及App修改。
第4章 Android工具应用进阶:主要从Android工具应用层面,以游戏加速器、近场传输、微信清理和Google安装器为例来说明与工具应用进阶相关的技术。要开发这些应用,开发者不仅需要有过硬的Android技术,还需要有对相关业务的深入理解。
第5章 Android工程构建进阶:主要从工程构建方面来讲解与Android工程相关的构建技术,如我们常见的多渠道自动打包和自动定制化构建等。
第6章 移动场景下的容器技术:主要从几种不同的业界方案(如MoveToDex、MultiDex等)来讲解Android平台容器化技术的发展,以及Android原生容器化技术的发展。
第7章 移动混合前端技术:主要讲解大前端技术,分别从H5、React Native/Weex和Flutter等方面来展开讲解。大前端技术发展至今,国内、国外都有不同的解决方案,但本质上都是围绕效率和体验发展的。
第8章 移动场景下的AI技术:主要讲解移动场景下的AI技术发展,对业界常用的移动AI框架(如Caffe2和TensorFlow Lite)进行了比较说明,同时还对其具体应用实践进行了讲解。
第9章 移动场景下的安全攻防技术:主要讲解移动场景下的安全攻防技术,分别从静态分析和动态分析两个角度来讲解如何进行安全攻防。
第10章 Android平台下的设计模式进阶:主要从SOLID设计原则、并行程序设计模式,以及设计模式在Android源码中的应用等方面来讲解设计模式在移动场景下的进阶与应用实践。
要想对书中所述的内容有深刻的认识,读者需要具备一定的Android技术基础和应用层业务经验。本书主要针对Android进阶技术与应用实践,不会对相关技术原理做过多的解读,因此若读者还不具备这些知识的话,建议先打好基础后再阅读本书。
目标读者
移动应用开发者、Android系统开发人员、Android系统安全工程师,以及Android领域的移动技术负责人。
本书约定
为了使书中讲述的内容更容易理解,本书做了如下约定。
√ 本书在讲解部分内容时,可能会对Android系统源码加以引用。
√ 本书不提供Android系统源码的下载方法,并假定读者已经自行下载了。
√ 本书在引用Android系统源码时,为了避免占用过多篇幅,在不影响理解的情况下,对部分源码进行了删减。
致谢
首先,要感谢本书的编辑付睿女士。在我编写本书时,付睿女士提供了很多意见和建议,并多次耐心指导我写作技巧,她还对书稿质量进行了严格把关。
然后,感谢我的妈妈黄继兰女士,感谢我的老婆旷凌云女士,以及我的两个宝贝(Mary和钧宝),他们给了我很多鼓励,因为有他们,我才能克服困难,坚持下来。
第一次写作,其间遇到了很多困难,工作本来已经很辛苦,工作外基本没多少时间用来写作,在这个过程中,感谢支持与关心我的各位朋友,他们给了我很多启发,谢谢他们!
另外,感谢那些Android大牛,因为他们的前期分享与奉献,我才能站在巨人的肩膀上分享和总结我的经验。
最后,感谢那些关注本书,为本书提过意见的朋友们,他们的支持是我写作本书最大的动力。
此外,虽然我对书中所述内容进行了多次校对,但因时间有限和水平所限,书中难免存在疏漏和错误,敬请广大读者批评指正,可以发邮件到[email protected]联系我。
胡强(得塔)
2019年6月12日
目录
第1章 Android数据技术 1
1.1 数据采集 1
1.1.1 数据格式 1
1.1.2 多端协同技巧 3
1.1.3 数据分级方案 5
1.1.4 多进程解决方案 7
1.2 数据绑定 8
1.2.1 控件数据绑定 8
1.2.2 内容曝光框架 9
1.3 数据存储和上报 10
1.3.1 数据加密方案 11
1.3.2 数据存储策略 11
1.3.3 数据上报策略 14
1.4 前端埋点 15
1.4.1 代码埋点 16
1.4.2 声明式埋点 17
1.4.3 无痕埋点 18
第2章 Android下的工具基建进阶 30
2.1 带有反劫持功能的下载SDK 30
2.1.1 分段式多线程网络通信 30
2.1.2 常见的下载劫持 32
2.1.3 下载劫持监控 32
2.1.4 在下载中实现反劫持 33
2.1.5 下载SDK的应用 34
2.2 沉浸式交互组件 34
2.2.1 碎片化导致沉浸式适配困难 34
2.2.2 Android官方沉浸式状态栏方式 35
2.2.3 主流厂商的沉浸式方式简介 36
2.3 基于信息流的图片加载框架 38
2.3.1 图片加载 38
2.3.2 图片缓存机制 39
2.3.3 图片加载过程中遇到的问题 40
2.3.4 基于信息流的图片加载设计 47
2.3.5 基于信息流的图片加载实现 48
2.4 进程保活 49
2.4.1 常规的保活技术 49
2.4.2 保活的悖论 52
2.4.3 系统发展对保活的影响 53
2.5 Android文件系统扫描 53
2.5.1 什么是文件系统 54
2.5.2 文件系统挂载 54
2.5.3 虚拟文件系统层 56
2.5.4 超级块 57
2.5.5 文件扫描算法 58
2.5.6 结合系统机制进行进阶扫描设计 61
2.5.7 扫描实现设计 62
2.5.8 C语言实现的扫描逻辑 63
2.6 高可用前置通道 64
2.6.1 前置通道简介 64
2.6.2 常驻通知栏 64
2.6.3 Android推送能力介绍 65
2.6.4 主流厂商推送SDK适配 65
2.6.5 Android统一推送联盟 67
2.6.6 桌面悬浮窗 67
第3章 Android下的效能进阶 68
3.1 App性能监测实现 68
3.1.1 App性能监测背景 68
3.1.2 App性能监测总体设计 68
3.1.3 启动速度框架 69
3.1.4 内存监测系统 69
3.1.5 页面卡顿解决方案 70
3.1.6 处理App性能问题的经验 72
3.2 App真机检测系统 75
3.2.1 为什么需要真机检测 75
3.2.2 真机检测整体设计 75
3.2.3 Monkey稳定性检测 76
3.2.4 自动化敏感权限检测 77
3.2.5 面向游戏的真机检测 77
3.3 APK信息一站式修改 79
3.3.1 APK文件构成 79
3.3.2 APK签名校验流程 80
3.3.3 V1与V2签名 82
3.3.4 如何打造渠道包 82
第4章 Android工具应用进阶 86
4.1 游戏加速器 86
4.1.1 游戏加速器的使用场景 86
4.1.2 基于性能的加速实现 86
4.1.3 基于流量劫持(VPN)的加速实现 91
4.1.4 基于VPN加速器的整体设计 93
4.2 近场传输 94
4.2.1 近场传输场景 95
4.2.2 近场传输设计 95
4.2.3 Wi-Fi创建 97
4.2.4 Wi-Fi扫描 99
4.2.5 Wi-Fi连接 100
4.2.6 数据传输逻辑处理 102
4.3 微信清理 103
4.3.1 微信清理背景 103
4.3.2 微信清理设计 103
4.3.3 微信清理实现 103
4.4 Google安装器 105
4.4.1 Google安装器背景 105
4.4.2 Google服务框架 106
4.4.3 Google服务框架安装器GSI实现 108
第5章 Android工程构建进阶 111
5.1 工程构建基础 111
5.1.1 应用基本信息 111
5.1.2 编译过程 112
5.2 工程构建进阶 115
5.2.1 多渠道打包 115
5.2.2 渠道信息批量写入 116
5.2.3 资源混淆 116
5.2.4 发布到Maven仓库 118
5.2.5 搭建私有Maven仓库 120
5.3 工程构建定制 123
5.3.1 认识Gradle DSL 123
5.3.2 自定义打包逻辑 125
5.3.3 Freeline秒级编译浅析及接入 129
第6章 移动场景下的容器技术 133
6.1 MoveToDex方案 134
6.1.1 Dalvik虚拟机dex加载机制 134
6.1.2 方法数超过65 536B问题 136
6.1.3 DexOpt LinearAlloc大小限制问题 139
6.1.4 MoveToDex按需加载方案 140
6.2 MultiDex方案优化 141
6.2.1 如何使用MultiDex 141
6.2.2 MultiDex痛点剖析 142
6.2.3 MultiDex方案回归 143
6.2.4 如何优化MultiDex 144
6.3 插件化与组件化 145
6.3.1 插件化与组件化的区别 145
6.3.2 为什么要做容器化 147
6.3.3 容器化技术演进 147
6.3.4 容器化框架的弊端 150
6.3.5 Android P下的容器化技术前进方向 150
6.3.6 App Bundle解析 151
第7章 移动混合前端技术 153
7.1 H5方案 153
7.1.1 轻量化方案――H5应用 153
7.1.2 H5交互与接口实现 154
7.1.3 H5的缺点 155
7.2 Weex和React Native 155
7.2.1 Weex和React Native简介 156
7.2.2 Weex和React Native的对比 156
7.2.3 如何使用 159
7.3 Flutter 164
7.3.1 Flutter简介 165
7.3.2 Dark语言简介 165
7.3.3 Flutter原理浅析 167
第8章 移动场景下的AI技术 170
8.1 移动AI现状 170
8.1.1 背景 170
8.1.2 移动AI落地方案 172
8.2 AI的应用场景 173
8.2.1 图像处理 173
8.2.2 语音处理 175
8.2.3 模式识别 177
8.3 移动AI框架 177
8.3.1 Caffe2 178
8.3.2 TensorFlow Lite 180
8.3.3 Caffe2与TensorFlow Lite的对比 191
8.4 移动AI业务实践 192
8.4.1 接入成本 192
8.4.2 模型的动态更新 192
8.4.3 兼容性与局限性 194
第9章 移动场景下的安全攻防技术 195
9.1 静态分析Android应用 195
9.1.1 使用ShakaApktool反编译APK 196
9.1.2 使用JEB分析Java代码 197
9.1.3 使用IDA Pro静态分析so文件 203
9.2 动态分析Android应用 207
9.2.1 使用IDA Pro动态调试APK 207
9.2.2 使用Xposed Hook Java代码 211
9.2.3 使用Cydia Substrate Hook Java和Native 219
9.2.4 使用Frida Hook Java和Native代码 228
第10章 Android平台下的设计模式进阶 237
10.1 SOLID设计原则 237
10.1.1 单一职责原则 237
10.1.2 开闭原则 239
10.1.3 里氏替换原则 244
10.1.4 接口隔离原则 246
10.1.5 依赖倒置原则 248
10.2 并行程序设计模式 253
10.2.1 Amdahl定律 253
10.2.2 Future模式 255
10.2.3 Master-Worker模式 256
10.2.4 Guarded Suspension模式 259
10.2.5 不变模式 260
10.3 设计模式在Android源码中的应用 261
10.3.1 策略模式 262
10.3.2 适配器模式 262
10.3.3 命令模式 263
10.3.4 建造者模式 263
10.3.5 享元模式 264
10.3.6 备忘录模式 267
10.3.7 观察者模式 269
10.3.8 原型模式 270
10.3.9 代理模式 271
10.3.10??状态模式 274