自定义Android(安卓)Gradle插件的3种方式
因为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
更多相关文章
- Android(安卓)res文件夹下资源定义及使用
- 在Android中使用帧动
- recovery
- android studio导入第三方工具
- Android(安卓)签名工厂
- Android(安卓)JetPack DataBinding 将界面和数据进行绑定
- Android工程报错常见解决方法
- Android(安卓)adb不是内部或外部命令 (转)
- 移植ffmpeg到android_1