Android Studio 调试 Gradle 插件

为了调试gradle插件,前后花费了我好几天时间,google、百度搜了不少相关资料,结果发现没一个靠谱,基本都是只说了一部分,因为我的插件是独立项目,但搜来的文章偏偏也没说哪个调试哪个,搞得我尴尬了好久。。。没办法只好自己琢磨,记录时顺便分享下,希望能让遇到相同问题的朋友少走弯路~

 

继续之前,我先假设你已经会写gradle插件了,并且已经写好了然后想调试插件,因为这篇文章是讲调试gradle插件。

 

我的开发环境是:Android Studio 3.2.1,gradle 4.10.1

 

第1步,生成jar格式的插件并上传至本地仓库

在你的插件模块目录下,找到build.gradle打开:

在底部添加如下代码,然后点击右上角的 “Sync Now” 保存:

def groupName = 'XXXX'//组名,改成你自己的
def artifactName = 'XXXXX'//项目名,改成你自己的
def versionName = '1.0.1'//版本号,改成你自己的

//上传至本地仓库
uploadArchives {
    repositories {
        mavenDeployer {
            pom.groupId = "${groupName}"
            pom.artifactId = "${artifactName}"
            pom.version = "${versionName}"
            repository(url: uri('../PluginRepository'))
        }
    }
}

然后我们可以在gradle目录下找到uploadArchives,双击uploadArchives即可上传至本地仓库。

 

上边一切顺利的话我们可以在插件项目的根目录下找到一个目录:PluginRepository,点开就可以看到生成的插件了。

 

第2步:在目标项目中引入这个插件

打开目标项目,在项目根目录下找到build.gradle,添加本地仓库目录,然后在dependencies中添加classpath:

buildscript {
    
    repositories {
        google()
        jcenter()
        maven {
            //改成你自己的
            url uri('file://I:/myfile/androidstudio/MessProject/PluginRepository')
        }
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
        classpath '组名:项目名:版本号'//改成你自己的
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

然后点击右上角的 “Sync Now” 保存。

 

第3步:在插件项目中创建远程调试

回到插件所在项目,点击【Run】->【Edit Configurations...】:

然后点击左上角的【+】,选择【Remote】:

然后,把命令行参数复制下来,其他默认即可,当然名称可以改成自己喜欢的,然后点击【OK】:

这样服务端就搞好了,稍后我们需要配置客户端调试器让其连接过来,就可以调试了

远程调试有两种模式,或者说有两种方式可选:

  1. attach模式, 运行debugger,让其监听某个ip:port,然后等待debugger启动并连接这个端口,然后就可以在debugger上断点调试。
  2. listen模式,让debugger监听某个ip:port, 然后启动debuger连接这个端口,接下来在debugger上断点调试。

 

第4步:在目标项目新建gradle任务并连接到服务端

在目标项目(即引入插件的那个项目),打开gradle目录,启动模块一般都是app,所以我们展开到【:app】->【Tasks】->

因为我的插件写的是基于Mess的全混淆插件,任务是基于某项tasks的,具体就是在任务名为:transformClassesAndResourcesWithProguardForRelease运行期间运行的一个插件。

所以,我新建了一个基于【:app】->【Tasks】->【other】->【transformClassesAndResourcesWithProguardForRelease】 的任务

其他任务,大家可以根据自己的实际需要新建,我的示例仅供参考。

 

选择后,我们右键选择【create ....】,在打开的界面右侧,把第3步复制下来的内容粘贴到【VM options】,然后点击【OK】:

最终就是下边这个样子:

 

第5步:启动调试

经过前边的操作,现在我们可以进行正式的调试了,

1、首先回到插件所在项目,下好断点,将工具栏的运行选项改成我们新建的远程调试那个选项,没有取名字的话默认就是【nonamed】,然后点击启动调试的图标:

控制台会看到如下输出,说明启动成功:

2、回到目标项目(即引用插件的那个项目),双击我们新建的gradle任务:

 

如果一切顺利,双击gradle任务后,目标项目的调试器很快就会连接到我们建立的服务端并自动跳转,如果遇到断点则会断下来:

 

大家如果遇到不确定的,可以给我留言。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值