人民邮电出版社有限公司店铺主页二维码
人民邮电出版社有限公司 微信认证
人民邮电出版社微店,为您提供最全面,最专业的一站式购书服务
微信扫描二维码,访问我们的微信店铺
你可以使用微信联系我们,随时随地的购物、客服咨询、查询订单和物流...

ASM全埋点开发实战 安卓Android手机移动开发全埋点技术软件开发计算机编程语言程序设计书籍

74.90
运费: ¥ 0.00-20.00
ASM全埋点开发实战 安卓Android手机移动开发全埋点技术软件开发计算机编程语言程序设计书籍 商品图0
ASM全埋点开发实战 安卓Android手机移动开发全埋点技术软件开发计算机编程语言程序设计书籍 商品图1
ASM全埋点开发实战 安卓Android手机移动开发全埋点技术软件开发计算机编程语言程序设计书籍 商品图2
ASM全埋点开发实战 安卓Android手机移动开发全埋点技术软件开发计算机编程语言程序设计书籍 商品图3
ASM全埋点开发实战 安卓Android手机移动开发全埋点技术软件开发计算机编程语言程序设计书籍 商品图4
ASM全埋点开发实战 安卓Android手机移动开发全埋点技术软件开发计算机编程语言程序设计书籍 商品缩略图0 ASM全埋点开发实战 安卓Android手机移动开发全埋点技术软件开发计算机编程语言程序设计书籍 商品缩略图1 ASM全埋点开发实战 安卓Android手机移动开发全埋点技术软件开发计算机编程语言程序设计书籍 商品缩略图2 ASM全埋点开发实战 安卓Android手机移动开发全埋点技术软件开发计算机编程语言程序设计书籍 商品缩略图3 ASM全埋点开发实战 安卓Android手机移动开发全埋点技术软件开发计算机编程语言程序设计书籍 商品缩略图4

商品详情

书名:ASM全埋点开发实战
定价:99.8
ISBN:9787115612618
作者:王灼洲,张伟
版次:第1版
出版时间:2023-07

内容提要:
本书由业内专业团队神策数据的专业人士编写,结合实战案例,深入浅出地介绍了ASM技术和Android全埋点技术。 作者从神策数据服务*过2000家客户的经历中,发现了行业用户对全埋点技术的迫切需求。本书针对这一点,详细、客观地阐述了ASM在Android全埋点中的应用,涵盖各种真实商业场景,并清晰地讲解其技术原理和实现步骤,以帮助用户利用好全埋点技术的特长和优势。 本书作为一本技术参考书,特别适合非专业开发工程师在日常工作中使用。



作者简介:
王灼洲是《Android 全埋点解决方案》《iOS 全埋点解决方案》作者,担任数据治理研发部负责,有*过十年的Android & iOS 相关开发经验,是国内早期从事 Android 研发工作的工程师。 张伟,从事移动研发工作*过十年,在神策主要负责埋点技术研究工作。编写过Flutter全埋点解决方案。

目录:
1 Gradle插件介绍
1.1 什么是Gradle插件 /002
1.2 Gradle基础知识 /002
1.2.1 学习前提 /002
1.2.2 Gradle项目结构 /002
1.2.3 生命周期 /004
1.2.4 Project API介绍 /005
1.2.5 Gradle任务介绍 /007
1.2.6 生命周期回调 /013
1.2.7 Gradle执行流程 /018
1.2.8 获取属性的几种常见方式 /018
1.2.9 任务执行后的几种状态 /018
1.2.10 增量构建 /019
1.3 插件类型 /022
1.3.1 脚本插件 /022
1.3.2 buildSrc插件 /024
1.3.3 单独项目插件 /025
1.3.4 单独项目插件优化 /028
1.3.5 插件使用方式 /032
1.3.6 小结 /034
1.4 Gradle扩展 /035
1.4.1 什么是扩展 /035
1.4.2 ExtensionContainer API介绍 /035
1.4.3 创建扩展 /038
1.4.4 添加和查找扩展 /040
1.4.5 扩展嵌套 /042
1.4.6 NamedDomainObjectContainer /043
1.5 综合示例 /050
1.5.1 概述 /050
1.5.2 集成步骤 /051
1.6 插件发布 /055
1.6.1 Gradle Plugin Portal /055
1.6.2 Maven Central简介 /059
1.6.3 上传到Maven Central /060
1.7 插件调试 /067
1.7.1 输出日志 /067
1.7.2 断点调试 /068
1.8 小结 /070

2 Transform介绍
2.1 Android应用的构建 /072
2.1.1 什么是APK文件 /072
2.1.2 什么是DEX文件 /073
2.1.3 Android应用的构建流程 /073
2.2 Transform简介 /076
2.3 Transform的简单应用 /076
2.4 Transform API详细介绍 /079
2.4.1 getName() /080
2.4.2 getInputTypes() /081
2.4.3 getScopes() /082
2.4.4 transform() /085
2.4.5 getReferencedScopes() /090
2.4.6 isIncremental() /091
2.4.7 isCacheable() /092
2.4.8 getSecondaryFiles() /092
2.5 Transform模板 /094
2.6 并发编译 /101
2.7 Transform原理介绍 /102
2.8 小结 /106

3 字节码基础
3.1 Java虚拟机 /108
3.2 javap工具介绍 /108
3.3 特定名称介绍 /113
3.3.1 字段描述符、方法描述符 /113
3.3.2 全限定名 /114
3.3.3  /116
3.4 .class文件结构 /117
3.4.1 初识 .class文件 /117
3.4.2 .class文件的组成 /118
3.5 小结 /151

4 字节码指令
4.1 Java虚拟机栈 /154
4.2 栈帧 /155
4.3 局部变量表 /156
4.4 操作数栈 /158
4.5 字节码指令介绍 /159
4.5.1 加载和存储指令 /160
4.5.2 算术指令 /163
4.5.3 类型转换指令 /166
4.5.4 对象的创建和操作指令 /167
4.5.5 操作数栈管理指令 /171
4.5.6 控制转移指令 /175
4.5.7 方法调用和返回指令 /179
4.5.8 异常抛出指令 /180
4.5.9 同步指令 /180
4.6 方法调用 /181
4.6.1 invokevirtual指令 /181
4.6.2 invokestatic指令 /182
4.6.3 invokespecial指令 /183
4.6.4 invokeinterface指令 /185
4.6.5 方法调用指令的区别和方法分派 /185
4.6.6 invokedynamic指令 /191
4.7 案例分析 /195
4.7.1 System.out.println /195
4.7.2 switch-case与String /195
4.7.3 for循环原理 /198
4.7.4 try-catch-finally原理 /198
4.8 加载、链接、初始化 /203
4.8.1 加载时机 /204
4.8.2 加载过程 /205
4.8.3 字节码剖析 /207
4.9 字节码指令偏移 /211
4.10 Java虚拟机中的数据类型 /212
4.10.1 基本数据类型 /213
4.10.2 引用数据类型 /214
4.11 小结 /214

5 ASM基础
5.1 ASM简介 /216
5.2 ASM组成 /216
5.3 ClassReader API介绍 /217
5.3.1 构造方法 /217
5.3.2 accept()方法 /219
5.4 ClassVisitor API介绍 /221
5.4.1 ClassVisitor()构造方法 /222
5.4.2 visit() /223
5.4.3 visitSource() /223
5.4.4 visitModule() /223
5.4.5 visitNestHost() /224
5.4.6 visitNestMember() /227
5.4.7 visitInnerClass() /228
5.4.8 visitOuterClass() /228
5.4.9 visitField() /228
5.4.10 visitMethod() /229
5.4.11 visitAnnotation() /230
5.4.12 visitTypeAnnotation() /230
5.4.13 visitPermittedSubclass() /232
5.4.14 visitRecordComponent() /232
5.4.15 visitEnd() /233
5.5 ClassWriter API介绍 /233
5.5.1 构造方法 /233
5.5.2 toByteArray() /233
5.6 类的转换和修改 /235
5.6.1 转换类的方式 /235
5.6.2 删除Class成员 /239
5.6.3 增加Class成员 /240
5.6.4 修改Class成员 /242
5.7 MethodVisitor API介绍 /245
5.7.1 visitParameter() /248
5.7.2 visitAnnotationDefault() /249
5.7.3 visitAnnotation() /249
5.7.4 visitTypeAnnotation() /250
5.7.5 visitAnnotableParameterCount()和visitParameterAnnotation() /251
5.7.6 visitAttribute() /252
5.7.7 visitCode() /252
5.7.8 visitInsn() /252
5.7.9 visitIntInsc() /253
5.7.10 visitVarInsn() /253
5.7.11 visitTypeInsn() /253
5.7.12 visitFieldInsn() /254
5.7.13 visitMethodInsn() /254
5.7.14 visitInvokeDynamicInsn() /254
5.7.15 visitLabel() /256
5.7.16 visitJumpInsn() /256
5.7.17 visitLdcInsn() /257
5.7.18 visitIincInsn() /258
5.7.19 visitTableSwitchInsn() /258
5.7.20 visitLookupSwitchInsn() /259
5.7.21 visitTryCatchBlock() /261
5.7.22 visitLocalVariable和visitLineNumber() /261
5.7.23 visitFrame() /261
5.7.24 visitMaxs() /263
5.7.25 visitEnd() /264
5.8 方法的转换和修改 /264
5.8.1 方法生成 /264
5.8.2 删除方法和方法体内容 /266
5.8.3 优化方法中的指令 /267
5.9 ASM工具包介绍 /269
5.9.1 Type /269
5.9.2 TraceClassVisitor /270
5.9.3 CheckClassAdapter /271
5.9.4 ASMifier /274
5.9.5 TraceMethodVisitor /278
5.9.6 CheckMethodAdapter /278
5.9.7 LocalVariableSorter /278
5.9.8 GeneratorAdapter /282
5.9.9 AdviceAdapter /283
5.10 其他实例 /284
5.10.1 方法替换 /284
5.10.2 方法参数复用 /286
5.11 小结 /288

6 ASM基础之Tree API
6.1 Tree API简介 /290
6.2 ClassNode API介绍 /290
6.2.1 类的生成 /293
6.2.2 类的转换和修改 /294
6.3 ClassNode与Core API相互转换 /295
6.3.1 ClassNode的特性 /296
6.3.2 与Core API相互转换 /296
6.4 MethodNode API介绍 /299
6.4.1 方法的生成 /303
6.4.2 方法的转换和修改 /304
6.5 MethodNode与Core API相互转换 /305
6.5.1 MethodNode的特性 /305
6.5.2 与Core API相互转换 /305
6.6 Core API和Tree API如何选择 /307
6.7 其他 /307
6.7.1 方法分析 /307
6.7.2 兼容性探讨 /311
6.7.3 Attribute /314
6.7.4 ASM框架分析 /315
6.8 小结 /322

7 ASM实现全埋点——基础部分
7.1 目标 /324
7.2 实现步骤 /324
7.2.1 创建Demo工程和SDK模块 /324
7.2.2 创建插件框架 /328
7.2.3 编写插件逻辑 /332
7.2.4 验证 /335
7.2.5 发布 /336
7.3 小结 /336

8 ASM实现全埋点——进阶部分
8.1 黑名单 /338
8.2 防止多次插入 /341
8.3 方法前插还是后插 /344
8.4 支持Lambda和方法引用 /346
8.4.1 原因分析 /346
8.4.2 Lambda表达式的实现原理 /347
8.4.3 Lambda设计参考 /360
8.4.4 Hook Lambda和方法引用 /365
8.5 小结 /376

9 ASM实践分享和未来展望
9.1 是否可以注册多个Transform /378
9.2 插入代码是否会改变行号 /378
9.3 是否支持Kotlin /380
9.4 ASM如何处理继承关系 /381
9.4.1 ClassLoader方式 /382
9.4.2 类图方式 /384
9.5 慎用static变量 /384
9.6 AGP 7的变化 /385
9.7 小结 /388
人民邮电出版社有限公司店铺主页二维码
人民邮电出版社有限公司 微信公众号认证
人民邮电出版社微店,为您提供最全面,最专业的一站式购书服务
扫描二维码,访问我们的微信店铺
随时随地的购物、客服咨询、查询订单和物流...

ASM全埋点开发实战 安卓Android手机移动开发全埋点技术软件开发计算机编程语言程序设计书籍

手机启动微信
扫一扫购买

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏

微信支付

支付宝

扫一扫购买

打开微信,扫一扫

或搜索微信号:renyoushe
人民邮电出版社官方微信公众号

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏