gradle开发之调试

关于gradle plugin的开发方式,网上可以搜到很多,也都讲的很详细。但是我在开发的过程中,发现调试是个很困难的问题,于是我跑的官网找了一下gradle的test,确实有:传送门 ;里面讲的很详细:如何使用GradleRunner来写测试代码。

本篇文章侧重点在下面三个问题:

1 如何调试gradle的插件

1. 先要debug模式启动应用程序:

2. 下面需要考虑如何attach:

2 如何调试android app的application

3 如何启动并运行gradle的插件


1 如何调试gradle的插件

调试一般都分两步:

1. debug模式启动应用程序

2. attach到应用程序对应的进程

 

所以按照一般的步奏

  •  debug模式启动应用程序:

一般的执行文件都提供了debug模式的启动参数,gradlew也有,比如我们执行gradlew assemlbeDebug, 它的debug模式:

 gradle assembleDebug -Dorg.gradle.daemon=false -Dorg.gradle.debug=true

或者通过修改环境变量方式:

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

然后执行gradlew assemlbeDebug,程序就在没启动之前停住了。

 

  • 下面需要考虑如何attach:

这里给个传送门,很简单配置一下就好了。

 

2 如何调试android app的application

一般使用android studio的debug按钮可以重新编译打包apk,然后然后自动安装启动,此时application有断点就可以停住;

如果我只想每次启动app就能停住到最早的断点上呢?请查看传送门

 

3 如何启动并运行gradle的插件

关于这个问题,我想换一种表述方式:如果引用本地的gradle插件?

网上可能会搜到很多关于gradle插件的开发指南,里面都会讲到gradle的插件如何发布,然后我们如何在app里引用发布的插件。

但如果不发布我们可以引用吗?这是当然了,我们只需要在setting.gradle配置:

includeBuild 'gradleplugin'

其中gradleplugin对应插件项目的目录,其他地方引用方式和引用一个发布的插件没有区别

这么做的好处:我们可以实时调试本地插件,而不用每次都要发布一次。

 

有兴趣可以看下官方的sample: https://github.com/gradle-guides/testing-gradle-plugins.git

 

 

你可能感兴趣的:(android,gradle)