从精准化测试看ASM在Android中的强势插入-Plugin调试

738 阅读1分钟

Gradle作为一个脚本工具,在开发的过程中,最痛苦的莫过于「调试」,大部分时候,我们都是通过Log的方式来进行调试,在编译过程中,可以很清楚的看见执行过程,同时也能看到系统的其它执行的Task。

Logging

Logging是Gradle提供的日志工具,它的使用非常简单,我们可以对其进行下封装。

fun log(log: String) {
    Logging.getLogger(MyPlugin::class.java).lifecycle(log)
}

通过getLogger就可以获取Logging的实例,它和Android原生的Log类似,也有debug、info、error等日志级别,大家可以根据自己的需求来调用。

断点调试

Gradle插件的断点调试不能像普通代码那样调试,需要借助Android Studio的Remote调试功能。

首先,需要在Android Studio中创建一个Remote调试器,在运行标签上点击「Edit Configuration」,再点击「+」新增一个调试类型,选择Remote,将其命名为「plugin_debug」(当然,其它名字也行),如下所示。

image-20210706105500934

接下来,在当前项目的终端下,输入如下指令:

➜  ASMTest git:(master) ./gradlew assembleDebug -Dorg.gradle.debug=true --no-daemon

通过这个指令,就可以让Gradle在编译过程中等待Plugin Attach到Remote上。

最后,在运行标签上选择刚刚创建的「plugin_debug」选项,然后点击debug按钮执行指令即可等待断点命中了。

向大家推荐下我的网站 xuyisheng.top/ 专注 Android-Kotlin-Flutter 欢迎大家访问