Jimmy Chen

A Programmer

(原创)使用Android Studio开发Gradle插件

  记录下使用Android Studio开发Gradle插件的过程

Grandle插件开发

  1. 首先创建一个Android项目
  2. 在刚刚新创建的项目中,新建一个Android Module项目,类型选择Android Library
  3. 删除刚刚新建的Android Module项目下的test文件夹,不删除的话会导致后续Gradle插件编译报错
  4. 使用下面的内容覆盖刚刚新创建的Android Module项目的build.gradle文件内容

  1. 在src/main目录下创建一个groovy文件夹,在groovy文件夹内按照包名创建文件路径,路径创建完毕后,添加源码文件,这里博主创建了一个PluginTest.groovy源码文件

《(原创)使用Android Studio开发Gradle插件》

  1. PluginTest.groovy文件中添加如下源码,package包名可按需更改

  1. 在src/main目录下创建一个resources文件夹,在graresources文件夹内创建META-INF文件夹,在META-INF文件夹内容创建gradle-plugins文件夹,在gradle-plugins文件夹内添加一个PluginTest.properties文件,此时的文件夹和文件结构可以参考下图了。在PluginTest.properties文件内添加如下内容。需要注意的好似properties文件的名字就是我们在项目中通过apply plugin:时所使用的名字

《(原创)使用Android Studio开发Gradle插件》

  1. 进行构建,构建完毕后,对应的Gradle插件lib会生成在build/libs目录下

Gradle插件发布使用

发布到本地仓库并使用

接着,我们需要将插件发布到maven中央仓库,我们将插件发布到本地仓库就好了,在module项目下的buidl.gradle文件中加入发布的代码。

上面的group和version的定义会被使用,作为maven库的坐标的一部分,group会被作为坐标的groupId,version会被作为坐标的version,而坐标的artifactId组成即module名,我们让其取一个别名moduleName。然后maven本地仓库的目录就是当前项目目录下的repo目录。
这时候,右侧的gradle Toolbar就会在module下多出一个task

《(原创)使用Android Studio开发Gradle插件》

执行上述task后,会在整个项目的根目录下生成一个repo文件夹,文件夹树如下图所示

《(原创)使用Android Studio开发Gradle插件》

接下来展示如何使用我们生成的Gradle插件,接下来的操作都是在最初创建的Android项目内进行

  1. 首先修改Android项目的build.gradle文件,文件位于项目的源码根目录下

apply plugin后面引号内的名字就是前文PluginTest.properties文件的文件名。而class path后面引号里的内容,就是上面gradle中定义的group,version以及moduleName所共同决定的,和maven是一样的。当然,uri中也可以使用相对路径../repo作为替代

同步一下gradle,右侧app下other分类下就会多出一个testTask,双击执行这个Task,控制台就会输出刚才在gradle插件中输出的字符串了

《(原创)使用Android Studio开发Gradle插件》

发布到远程仓库并使用

博主在本地搭建了一个nexus maven仓库,所以下面的内容以本地maven仓库为准。

修改plugin的build.gradle,将其中的uploadArchives修改如下

上面的内容,url需要自行替换为所上传的maven仓库地址,其余的配置相应的groupId、artifactId等值,最后通过命令行执行./gradlew uploadArchives即可将修改的内容上传到远程maven仓库

上传到远程maven仓库后,如果需要使用,需要修改项目的build.gradle

上面在repositories中添加了maven字段,该字段指向本地的maven仓库地址。dependencies中classpatch指向配置的groupId、artifactId和version的拼接。最后同样在项目的build.gradle中添加apply plugin即可

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

%d 博主赞过: