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

2021-07-19 10:30:34 浏览数 (1)

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

Logging

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

代码语言:javascript复制
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

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

代码语言:javascript复制
➜  ASMTest git:(master) ./gradlew assembleDebug -Dorg.gradle.debug=true --no-daemon

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

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

向大家推荐下我的网站 https://xuyisheng.top/ 点击原文一键直达

专注 Android-Kotlin-Flutter 欢迎大家访问

0 人点赞