Android Studio 中如何运行 groovy 程序

运行 groovy 程序

首先由几个需要注意的地方
1.最好不要在Java Libray module 以外的其他类型module,运行groovy程序,脚本类的还问题不大,如果是在GroovyConsole运行java类的groovy程序时,就明显无法执行了。

因为 groovy 插件和 android 插件不兼容,所以不能在Android 相关的module上使用 groovy。 在这里插入图片描述 工程build失败,原因如下:
Caused by: com.android.build.gradle.internal.BadPluginException: The 'java' plugin has been applied, but it is not compatible with the Android plugins.

2.虽然不推荐在Java Library之外的其他模块运行groovy程序,但是只要把该模块的build gradle文件改为以下内容,脚本类和java类groovy程序还是能执行的,但是这也失去了该module的意义了吧,所以还是推荐使用Java
Library 运行groovy程序,当然如果只是学习groovy都为所谓。

apply plugin: 'groovy'

dependencies {
       implementation fileTree(dir: 'libs', include: ['*.jar'])
       implementation localGroovy() 
} 

apply plugin: ‘groovy’ 会引入 groovy 插件,groovy 插件继承了 java 插件。
implementation localGroovy() 会引入 Gradle 所带的 Groovy 库。

还是上面讲过的Android 和 groovy 插件不能同时存在,即下图这种方式是不允许的
在这里插入图片描述
java-library 插件和 groovy插件可以同时存在
在这里插入图片描述
根据上述需要注意的问题,正确步骤如下

1.新建一个Java Library module
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.修改该module下的build gradle 文件,如下
在这里插入图片描述
3.src/ main目录下新建 groovy 文件夹,并新建 Test.groovy 文件
在这里插入图片描述
在这里插入图片描述

1 、运行Java 式的 Groovy
按以上步骤完成后,编写demo如下,点击运行即可

class Test{
    static void main(String[] args){
        def word = "Hello World"
        println(word)
    }
}

在这里插入图片描述
虽然运行成功了,但是提示 Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.
此版本中使用了不推荐使用的Gradle功能,使其与Gradle 6.0不兼容。

回到当前module 下的 build.gradle文件,添加如下代码:

task renameGroovyToJava {
    doLast{
        delete "$buildDir/classes/java"
        File file = new File("$buildDir/classes/groovy")
        println file.renameTo("$buildDir/classes/java")
    }
}

compileJava.finalizedBy compileGroovy
compileGroovy.finalizedBy renameGroovyToJava

在这里插入图片描述
同步后,点击运行
在这里插入图片描述
1.1 原理
点击运行后,通过查看 android studio 控制台信息发现,它执行了 compileJava Task,于是将 compileGroovy Task 附着在 compileJava 后面,compileGroovy task 完成后,再将 build/classes/groovy 文件夹重命名为 java。从而使 android studio 可以执行 groovy 编译后的 class 文件。

前后对比如下:
在这里插入图片描述
在这里插入图片描述
2 、脚本式的 Groovy

扫描二维码关注公众号,回复: 9956944 查看本文章

1.在Test.groovy相同路径下创建新的groovy文件,如下
在这里插入图片描述
在这里插入图片描述

2.编写 groovy 文件,如下:
在这里插入图片描述
3.找到工具栏的这个地方,选择 Edit Configurations...,在弹出的页面点击左上角的加号 Add New Configuration,再选择groovy
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.然后只需要填写 Name、Script path 就可以,Name 随便写,跟groovy文件名相同即可,Script path就选择上面 MyGroovy 类的路径。
在这里插入图片描述
5.现在工具栏如下,点击下图中红款中的绿三角,运行groovy程序
在这里插入图片描述
运行结果如下
在这里插入图片描述
注意
脚本类 groovy 的配置方法,同样可以用来执行 Java 类的 groovy,但 java 类的配置方法不能运行脚本类的 groovy。上面名为Test.groocy的Java 类的 groovy按照脚本类 groovy 的配置方法配置完成后运行如下:
在这里插入图片描述
在这里插入图片描述

Groovy console

android studio 的标题栏进入 Tools/Groovy Console。这里也可以直接运行 groovy 程序(java类的和脚本类的都可以)。
在这里插入图片描述
Groovy console 运行脚本类 非常简单,直接在编写点击左上角运行按钮即可
在这里插入图片描述
上图就是点击Groovy Console后创建的,编辑代码点击左上角三角符号后运行结果如下
在这里插入图片描述
Groovy console 运行java类 就比较麻烦了,我觉得也没有必要把java类在groovy console中运行,下面我还是说一下我踩过的坑和步骤吧

我之前创建的module是Android Library,该module的名字是groovy,然后build gradle 文件把Android 插件去掉了,如下图
在这里插入图片描述
然后我们在新的Groovy Console中随便编写一个class,代码如下:
在这里插入图片描述
点击运行,选择 Run 'Test1.main()':
在这里插入图片描述
选择 Run 'Test1.main()'后弹框如下:
在这里插入图片描述
上面已经提及到了,以上都是我在名为groovy Android Library module下进行的操作
在这里插入图片描述
选择完module后,提示如下:
在这里插入图片描述
所以还必须创建一个名为Test1的class文件,那我们问什么还要使用Groovy Console呢,直接运行java类的groovy程序就行了
我这里有一个之前的Test.class,直接把console里面的改一下名字,如下:
在这里插入图片描述
在这里插入图片描述
然后继续按上述步骤执行,这次全部OK了
在这里插入图片描述
点击Run之后,运行结果如下:
在这里插入图片描述
上面是正常的流程,不管是什么类型的module,只要build gradle 按上面配置,然后一步一步执行都能正常运行。

但是我之前把groovy插件和Android插件放到了一起,如下:
在这里插入图片描述
虽然build失败如下,但我没有理会:
在这里插入图片描述
这个时候我们还是按上面 Groovy Console执行java类程序 正常的步骤执行,会提示如下:Cause: compileSdkVersion is not specified. Please add it to build.gradle
即 原因:未指定compileSdkVersion,请将其添加到build.gradle
在这里插入图片描述
在这里插入图片描述
然后我们把compileSdkVersion添加到build gradle文件中,如下:
在这里插入图片描述
再次按照 Groovy Console执行java类程序 正常步骤执行,提示如下:The 'java' plugin has been applied, but it is not compatible with the Android plugins.
已经应用了“java”插件,但它与Android插件不兼容。还是一开始build提示的问题,所以说最好在Java Library 执行groovy程序

在这里插入图片描述
在这里插入图片描述

发布了18 篇原创文章 · 获赞 1 · 访问量 774

猜你喜欢

转载自blog.csdn.net/aha_jasper/article/details/104810684