如何调试Gradle Plugin

作者: ladder_builder | 来源:发表于2017-03-01 11:53 被阅读1409次

    背景

    笔者近期在研究Android的热补丁技术,需要自定义Gradle Plugin,来实现补丁的生成。Android应用开发者应该都知道如何调试android应用,但是由于Gradle的脚本是在代码的编译期运行的,和普通的应用程序不同,正常的调试方法不适用。但是大家都知道调试功能对于编写一个程序的重要性,不能调试是很痛苦的,而且会大大降低开发效率。

    后来从一个国外网站上看到一个帖子,讲如何调试Gradle脚本的,现在介绍给大家。
    原文链接:http://georgik.rocks/how-to-debug-gradle-script/

    1. 打开Teminal,设置Gradle环境变量

    export GRADLE_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"
    

    2. 打开android studio的run/debug configuration,如下图

    配置调试信息
    新建Remote调试
    不用修改,直接确定
    不用进行任何修改,直接点OK

    3. 在android studio中在相应的代码出设好断点

    设置断点
    4. 在命令行中相应的task
    $ cd 工程目录
    $ gradlew :hello
    
    运行task
    此时会等待attach debuger
    5. 在android studio中将debugger attach到相应的进程中
    选中Remote,然后点击debug按钮
    Attach Debugger
    6. 当代码执行到断点处,便会停下来 大功告成

    相关文章

      网友评论

      • 为何是Hex的昵称:已经解决了。
      • 为何是Hex的昵称:你好,我也在写插件,但是不知道怎么 debug,按照你的方法弄,断点停不住,我是把 插件 发布到了 本地的 repo 目录,然后使用的。请问你是怎么弄的?我的 插件内没有 task,执行是依赖于其他的task.doLast() 做的。
        为何是Hex的昵称:@WarpTens 按上面的文章步骤,去掉 export 环境变量,在第四步执行命令的时候 加入 -Dorg.gradle.daemon=false -Dorg.gradle.debug=true 参数,然后 attach 上 调试器后,会切换到 debug 窗口,这时候程序是暂停的,需要切换到 terminal 窗口,才会继续执行,碰到断点会自动停住。
        WarpTens:你好,我也碰到和你一样的问题,请问是怎么解决的呢?

      本文标题:如何调试Gradle Plugin

      本文链接:https://www.haomeiwen.com/subject/xjsqgttx.html