2

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

 3 years ago
source link: https://xuyisheng.top/plugin_debug/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
07 July 2021
2 min read

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

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按钮执行指令即可等待断点命中了。

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

  • shanghai,pudong,China
Android & Flutter Developer 《Android群英传》《Android群英传-神兵利器》作者
qrcode.jpg?v=005e02c67a qrcode_xys.jpeg?v=005e02c67a

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK