首页
学习
活动
专区
圈层
工具
发布
综合排序最热优先最新优先
时间不限
字节】AOP 技术 ( “字节“ 技术简介 | AspectJ 工具 | ASM 工具 )
文章目录 一、" 字节 " 技术简介 二、AspectJ 工具 三、ASM 工具 一、" 字节 " 技术简介 ---- 性能优化 , 插件化 , 热修复 , 等技术都需要用到 " 字节 , 监控应用各种性能 , 如页面打开时间 , 页面停留时间 ; 友盟应该用了该技术 ; 代码分析 : 使用编译时字节技术 , 自定义代码检查 ; 字节原理 : 使用 javac 编译出 . 工具 ---- AspectJ 工具 : 使用简单 : 使用 AspectJ 工具修改字节文件 , 不需要了解 .class 字节文件的二进制格式 ; 成熟稳定 : 字节操作 如果错了 1 个字节 , 整个字节就无法正常工作 , 因此修改字节操作 , 必须稳定 , 这也是工具的必备条件 ; 固定切入点 : AspectJ 只能在固定的几个切入点插入 , 如 : 方法调用前 , 对原来的性能也有一定影响 , 修改后的字节文件 性能低于 修改前的字节文件 ; 三、ASM 工具 ASM 工具 : 操作灵活 : 可以在字节 任何位置 , 自定义修改 , 插入 , 删除
韩曙亮
2023-03-29
2.5K0
标签:
ASM字节
方案4:字节 字节函数目前有以下两种框架 ASM 思路:应用程序打包成APK之前会先编译成.class文件,然后打包成dex,最后组成apk。 ASM框架进行字节函数 ============== 经过上述方案的对比,最终采用ASM进行字节。主要是对代码的侵入低,可定制化配置(过滤采集页面,过滤时长,配置页面映射等)。 下图箭头指向处就是进行函数的位置。 后续如果缺少相应的控件,那么可以根据相应的控件进行添加对应的字节描述即可: 例如在APP中的底部控件为Google的design控件,添加: SDK\_API\_CLASS = "com/cage/ 相关视频推荐: 【Android组件化设计】字节优化框架初始化速度 本文转自 https://juejin.cn/post/6844904194445426702,如有侵权,请联系删除。
没关系再继续努力
2021-11-27
1.5K0
标签:
Jacoco字节案例
字节注入与控制流 1 注入方式 JaCoCo是一个被广泛使用的JAVA覆盖率统计工具,它利用ASM库,通过注入字节的方式来修改和生成java字节,从而记录程序的执行数据,但它不会改变原有代码的行为 2 Probe探针组成 Jacoco是通过一个Probe探针的方式来注入的,探针是字节指令集插入到java方法中,程序执行后可以被记录,它不会改变原有代码的行为。 探针不改变该方法的行为,但记录他们已被执行的事实,从理论上讲,可以在控制流图的每一个边插入一个探针,作为探针实现本身需要多个字节指令,这将增加几倍的类文件的大小和执行速度。
Antony
2020-12-01
2.8K0
标签:
JaCoCo 字节机制解析:CoverageTransformer 与 transform 方法
该类通过实现 ClassFileTransformer 接口,在类加载阶段对字节进行实时,注入覆盖率统计逻辑。 (不可修改) 2.2 方法特性说明 返回值规则 返回修改后的字节数组:应用逻辑 返回 null:保持原始字节不变 抛出异常:效果等同于返回 null 转换器类型 不可重转换型:仅处理类加载和重定义事件 .class 用于验证结果和调试字节修改过程 4.2 文件生成逻辑 根据类名解析包路径 计算字节数组 CRC64 校验 拼接生成唯一文件名 写入指定目录 五、异常处理与最佳实践 5.1 异常处理策略 抛出 IllegalClassFormatException:标识输入字节格式错误 捕获所有 Throwable:防止未处理异常影响后续转换器 5.2 性能优化建议 避免不必要的字节修改(快速返回 null) 确保线程安全(多个类可能并行加载) 合理使用类过滤机制(通过 className 快速筛选目标类) 六、应用场景分析 场景 触发条件 典型应用 新类加载 首次加载类文件 启动时 动态类重定义
JavaEdge
2025-06-01
5250
标签:
调研字节技术,用于系统监控设计和实现
---- 接下来我们开始介绍关于使用字节非入侵的方式进行系统监控,关于字节常用的有三个组件,包括:ASM、Javassit、Byte-Buddy,接下来我们分别介绍它们是如何使用的。 、ProfilingMethodVisitor、ProfilingTransformer,这四个类主要是完成字节装操作和输出监控结果的类。 一些字节操作 } 当程序启动加载的时候,每个类的每一个方法都会被监控到。类的名称、方法的名称、方法入参出参的描述等,都可以在这里获取。 天津市东丽区万科赏溪苑14-0000","age":19,"code":"0000","info":"success","name":"虫虫:aaa"} 耗时:46(s) 监控 - End 从测试结果来看与 ASM 做字节的效果是一样 所以在使用字节框架的时候,可以考虑选择使用 Byte-buddy 这个非常好用的字节框架。
小傅哥
2021-07-23
1.6K0
标签:
【Android 字节】Gradle插件基础 & Transform API的使用
字节就是做这个用的, 一句话描述~ 我(字节)来这,就是将一段代码通过某种策略插入到另一段代码,或替换另一段代码 一、Gradle插件基础 在Gradle官方文档上是这么描述的: … 实现的插件,实际测试java 或 kotlin实现的插件, 比 groovy 实现的性能更好一些,当然只要你喜欢, 可以使用任何你喜欢的语言来实现gradle插件, 当然前提是最终可以被编译为jvm字节 ,处理成dex文件前,对字节做一些操作。 transform(TransformInvocation transformInvocation) 一般在这个方法中对字节做一些处理。 System.out.println("Hello MTransform..."); } } 然后就是注册插件,使用插件了~ 这些已经讲过了就不再赘述了~ 总结 对于APM & 数据隐私行业,字节是一个比较好用工具
胖虎哥
2024-02-02
1.3K0
标签:
基于字节工程的 Java 程序动态与监控方法研究
基于字节工程的 Java 程序动态与监控方法研究下面这篇文章面向有 Java 基础但对 JVM 内部、字节(bytecode)与运行机制不够熟悉的读者。 Java 的“可移植性”来自于字节(.class),JVM 在不同平台上解释或编译这些字节。 JVM 执行字节的两种主要方式:解释执行(Interpreter) 和 即时编译(JIT)。字节与具体 CPU 无关,因此具有可移植性;JVM 负责把字节映射到本地机器代码并优化。 字节指令把数据压入/弹出操作数栈,进行运算或调用方法。四、代码实战:从 Java 源码到字节、逐条理解下面通过一个小例子演示如何生成与查看字节,并逐条解释。 练习二:用 ASM 给方法(伪代码示意)下面是用 Byte Buddy(更高层次的字节库)做的伪代码,实际项目中你可以用它在运行时修改类行为:// 使用 Byte Buddy 的示意代码(伪)
百行代码
2025-09-19
3540
标签:
字节】Android 打包流程 | Android 中的字节操作方式 | AOP 面向切面编程 | APT 编译时技术
文章目录 一、Android 中的 Java 源码打包流程 1、Java 源码打包流程 2、字符串常量池 二、Android 中的字节操作方式 一、Android 中的 Java 源码打包流程 -- -- Java 程序在 Java 虚拟机执行前 , 需要先将 Java 源码通过 javac 编译成 .class 字节文件 , 然后才能在虚拟机中运行 ; 1、Java 源码打包流程 Android ; ④ 打包 Class 字节 : 使用 dx 工具将 class 字节文件打包成 dex 字节文件 , 这是 Dalvik 虚拟机字节文件 ; ⑤ 生成未签名 APK : 使用 apkbuilder 依赖库 , 3 件套 ; 参考 Android APT 专栏 ; AOP 和 APT 都可以用于字节操作 : AOP 的时机是 .class 字节文件打包为 .dex 文件过程中 ; APT 的时机是 .java 文件编译成 .class 字节文件时 , 进行的 , 编译时进行字节 ; ButterKnife , Dragger2 , GreenDao , ARoute
韩曙亮
2023-03-29
1.6K0
标签:
字节编程,Javassist篇四《通过字节监控方法采集运行时入参出参和异常信息》
一、前言 字节编程这种技术常与 Javaagent 技术结合用在系统的非入侵监控中,这样就可以替代在方法中进行硬编码操作。 为了能让这部分最核心的内容体现出来,本文会只使用 Javassist 技术对一段方法字节进行操作,最终输出这段方法的执行信息,如下; 方法 - 测试方法用于后续进行字节增强操作 public Integer 那么接下来我们开始一步步使用 javassist 进行字节,已达到我们的监控效果。 方法字节 一段需会被字节改变的原始方法; public class ApiTest { public Integer strToInt(String str01, String str02 2.6 字节给方法添加TryCatch 以上内容,如果只是正常调用还是没问题的。但是如果方法抛出异常,那么这个时候就不能做到收集监控信息了。所以还需要给方法添加上 TryCatch。
小傅哥
2020-04-28
1.4K1
标签:
Android 无侵入式数据采集:从手动埋点到字节的演进之路
**## 二、核心原理:AOP 与字节实现无侵入埋点的技术基石是 **AOP(Aspect-Oriented Programming,面向切面编程)**。 **生成 DEX 与 APK** 被“植入”埋点逻辑的字节与其他代码一起打包成 `.dex`,最终生成可发布的 APK。### 2. 为何选择编译期? ) | 低 |> **结论**:对于追求稳定性和性能的生产级 App,**编译期字节是首选方案**。 - **腾讯 Matrix**:其 `TraceCanary` 模块通过字节监控 ANR、卡顿,技术原理相通。- **美团 Logan**:日志系统结合实现自动上下文采集。### 2. ## 六、总结Android 无侵入式数据采集,通过 **AOP + 字节** 技术,从根本上解决了手动埋点的顽疾。
木易士心
2025-11-16
5560
标签:
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档