因为gradle插件是在编译过程中生效, 不用修改代码就能实现很多功能, 几乎每个app都使用了gradle插件。 下面就介绍一下自定义gradle插件的3种方式。

https://docs.gradle.org/current/userguide/custom_plugins.html#example_a_build_for_a_custom_plugin

     按照官网说明, 分为3种方式。

1、Build script, 即在项目中的build.gradle文件里添加groovy代码并引用; 确定是只有当前工程可用;

2、buildSrc project, Android Studio会找rootPrjectDir/buildSrc/src/main/groovy目录下的代码。 坑:当新建libraray module并命名为buildSrc后会提示Plugin with id 'com.android.library' not found. 这是因为buildSrc是Android的保留名称,只能作为plugin插件使用,我们修改buildSrc的build.gradle文件后就不报错了。

apply plugin: 'groovy'buildscript {  repositories {    mavenCentral()    jcenter()    google()  }  dependencies {    classpath 'com.android.tools.build:gradle:3.1.3'  }}dependencies {  compile gradleApi()  compile localGroovy()  compile 'com.android.tools.build:gradle:3.1.3'}allprojects {  repositories {    mavenCentral()    google()  }}

3、Standalone project, 即单独工程,这也是最常见的方式;一般为传版本到jcenter或maven里。 实现方式很简单, 我们可以在buildSrc里调试, 待需要发版时使用Android Studio打开buildSrc模块就新生成一个工程了。

实例:

方法一: 在项目build.gradle文件里定义groovy插件.

apply plugin: GreetingPlguin//在build.gradle文件中定义类class GreetingPlguin implements Plugin {    @Override    void apply(Project target) {        println("GreetingPlguin is executed!!!!!!")        //解析属性        def extension = target.extensions.create("greeting", GreetingPluginExtension)        target.task('hello') {            doLast {                println("Hello from the GreetingPlugin")                //读取配置信息                println(String.valueOf(extension.showMsg)+ "," + extension.message + "," + extension.time)            }        }    }}

编译工程

可以看到build输出里包含了GreetingPlugin is executed这句日志, 说明插件被执行。

方法二:使用buildSrc工程, 就是在当前工程里新建个library module, 然后按照图中格式调整内容。 插件入口在plugintest.properties里声明,文件内容implementation-class=com.brycegao.buildsrc.SrcPlugin

方法三:单独一个工程, 因为其它工程也可以用,所以准备发布到jcenter上。 打开bintray.com后一定要注册成个人用户!!!

     引用时就是在build.gradle里添加类似implementation 'com.brycegao.libplugin:libplugin:1.0.1' 就行了。

参考:https://blog.csdn.net/lmj623565791/article/details/51148825

https://blog.csdn.net/fafaws3000/article/details/79422833

     上传成功并待jcenter审核后才可以使用。

 

坑:

1、jcenter不支持QQ邮箱, 我注册时关联github账户(使用的QQ邮箱)就无法注册, 点击注册按钮时邮箱栏就变红。吐个槽:jcenter就不能给个提示么。 最后我是用gmail邮箱注册了个人账号;

2、jcenter貌似不支持中文,在写描述时用英文才能提交成功, 如果有中文就提示405 not authorized。

3、新建maven时最好关联github地址;

4、jcenter审核有时差,比较慢。

 

demo地址: https://github.com/brycegao/PluginTest

 

更多相关文章

  1. Android(安卓)res文件夹下资源定义及使用
  2. 在Android中使用帧动
  3. recovery
  4. android studio导入第三方工具
  5. Android(安卓)签名工厂
  6. Android(安卓)JetPack DataBinding 将界面和数据进行绑定
  7. Android工程报错常见解决方法
  8. Android(安卓)adb不是内部或外部命令 (转)
  9. 移植ffmpeg到android_1

随机推荐

  1. [转]Android EditView属性
  2. android 笔记 --- Android应用程序的权限
  3. 手动更新 Android SDK
  4. android adb命令 抓取系统各种 log
  5. android字体加粗的方法
  6. android studio ndk 开发以及问题
  7. Your CPU does not support required fea
  8. Android ProgressBar 各种样式大全
  9. android 中xml文件中出现 Attr.value mis
  10. android 自定义控件属性