android studio 修改代码后需要运行两次才生效_滴滴开源的Android 字节码编辑插件!...

DroidAssist 是一个轻量级的 Android 字节码编辑插件,提供代码替换、插入、环绕、增强等功能。通过 XML 配置处理 class 文件,实现类似 AOP 功能,无需额外依赖和 Java 字节码知识。其特点包括灵活配置、快速处理和简单易用。
摘要由CSDN通过智能技术生成

DroidAssist

DroidAssist 是一个轻量级的 Android 字节码编辑插件,基于 Javassist 对字节码操作,根据 xml 配置处理 class 文件,以达到对 class 文件进行动态修改的效果。和其他 AOP 方案不同,DroidAssist 提供了一种更加轻量,简单易用,无侵入,可配置化的字节码操作方式,你不需要 Java 字节码的相关知识,只需要在 Xml 插件配置中添加简单的 Java 代码即可实现类似 AOP 的功能,同时不需要引入其他额外的依赖。

功能

  • 替换:把指定位置代码替换为指定代码

  • 插入:在指定位置的前后插入指定代码

  • 环绕:在指定位置环绕插入指定代码

  • 增强

    • TryCatch 对指定代码添加 try catch 代码

    • Timing 对指定代码添加耗时统计代码

特点

  • 灵活的配置化方式,使得一个配置就可以处理项目中所有的 class 文件。

  • 丰富的字节码处理功能,针对 Android 移动端的特点提供了例如代码替换,添加 try catch,方法耗时等功能。

  • 简单易用,只需要依赖一个插件,处理过程以及处理后的代码中也不需要添加额外的依赖。

  • 处理速度较快,只占用较少的编译时间。

开发文档

DroidAssist 配置文件

DroidAssist 将扫描工程中的每一个单独的 class 以及 jar 中的 class, 并对 class 与配置文件中的规则进行匹配,如果有规则能够匹配到 class,则根据 DroidAssist 配置对此 class 进行字节码修改。DroidAssist 配置是一个 xml 文件,根节点是 DroidAssist , 根节点下包含 Global , Insert , Around , Replace , Enhance 代码操作配置,完整的 DroidAssist 配置文件格式如下:

<?xml  version="1.0" encoding="utf-8"?>

        ...
        ...
        ...
        ...
        ...

为了方便编写配置文件,在 IDE 中能自动提示,请将根目录下 DTD文件 拷贝到配置文件第二行。

配置分类:
  • Insert:代码插入类

  • Replace:代码替换类

  • Around:代码环绕类

  • Enhance:代码增强类

Source 和 Target

Insert、Replace、Around、Enhance 类型代码操作配置中均需要包含 SourceTarget 元素:例:


            int android.util.Log.d(java.lang.String,java.lang.String)
            $_= com.didichuxing.tools.test.LogUtils.log($$);

Source 的值 int android.util.Log.d(java.lang.String,java.lang.String) 表示需要匹配方法调用 android.util.Log.d( ) Target 的值 $_= com.didichuxing.tools.test.LogUtils.log($$);表示将调用 android.util.Log.d( ) 方法调用的代码替换为 com.didichuxing.tools.test.LogUtils.log( )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值