public class MainActivity extends Activity {
public static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "MainActivity onCreate");
}
}
处理后的 class:
public class MainActivity extends Activity {
public static final String TAG = "MainActivity";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String var2 = "MainActivity";
String var3 = "MainActivity onCreate";
int var4 = LogUtils.log(var2, var3); // The target method using custom log method.
}
}
DroidAssist

DroidAssist是一个轻量级的 Android 字节码编辑插件,基于Javassist对字节码操作,根据 xml 配置处理 class 文件,以达到对 class 文件进行动态修改的效果。和其他 AOP 方案不同,DroidAssist 提供了一种更加轻量,简单易用,无侵入,可配置化的字节码操作方式,你不需要 Java 字节码的相关知识,只需要在 Xml 插件配置中添加简单的 Java 代码即可实现类似 AOP 的功能,同时不需要引入其他额外的依赖。English
功能
特点
使用指南
DroidAssist 适用于
Android Studio工程application model或者library model,使用 DroidAssist 需要接入 DroidAssist 插件并编写专有配置文件。在 root project 的
build.gradle里添加:在需要处理的 model project 的 build.gradle 里添加:
其他配置:
enable如果需要停用 DroidAssist 插件功能,可以添加enable false以停用插件 (可选配置)logLevel日志输出等级:0关闭日志输出,1输出日志到控制台2输出日志到文件3输出日志到控制台以及日志 (可选配置)logDir日志输出目录,当日志输出到文件时,默认的输出目录是当前model的build/outputs/logs目录 (可选配置)示例
下面例子将把项目中所有使用系统
android.util.Log类进行DEBUG日志输出的代码替换为自定义的日志输出类,以方便对线上日志进行策略化,动态化管理。处理前的class:
处理后的 class:
完整文档
完整开发文档和配置见 开发文档wiki
局限
library model只能处理 Java 源码产生的 class,不能处理本地依赖中的 jar 。