Android Studio 中如何运行 groovy 程序

Android Studio 中如何运行 groovy 程序

  • 运行 groovy 程序
    • 运行Java式的Groovy
      • 原理
    • 运行脚本式的 Groovy
  • Groovy console
    • Groovy console 运行脚本类
    • Groovy console 运行java类

运行 groovy 程序

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

因为 groovy 插件和 android 插件不兼容,所以不能在Android 相关的module上使用 groovy。 Android Studio 中如何运行 groovy 程序_第1张图片 工程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
Android Studio 中如何运行 groovy 程序_第2张图片
Android Studio 中如何运行 groovy 程序_第3张图片
Android Studio 中如何运行 groovy 程序_第4张图片
Android Studio 中如何运行 groovy 程序_第5张图片
2.修改该module下的build gradle 文件,如下
Android Studio 中如何运行 groovy 程序_第6张图片
3.src/ main目录下新建 groovy 文件夹,并新建 Test.groovy 文件
Android Studio 中如何运行 groovy 程序_第7张图片
Android Studio 中如何运行 groovy 程序_第8张图片

运行Java式的Groovy

按以上步骤完成后,编写demo如下,点击运行即可

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

Android Studio 中如何运行 groovy 程序_第9张图片
虽然运行成功了,但是提示 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

Android Studio 中如何运行 groovy 程序_第10张图片
同步后,点击运行
Android Studio 中如何运行 groovy 程序_第11张图片

原理

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

前后对比如下:
Android Studio 中如何运行 groovy 程序_第12张图片
Android Studio 中如何运行 groovy 程序_第13张图片

运行脚本式的 Groovy

1.在Test.groovy相同路径下创建新的groovy文件,如下
Android Studio 中如何运行 groovy 程序_第14张图片
Android Studio 中如何运行 groovy 程序_第15张图片

2.编写 groovy 文件,如下:
Android Studio 中如何运行 groovy 程序_第16张图片
3.找到工具栏的这个地方,选择 Edit Configurations...,在弹出的页面点击左上角的加号 Add New Configuration,再选择groovy
Android Studio 中如何运行 groovy 程序_第17张图片
Android Studio 中如何运行 groovy 程序_第18张图片
Android Studio 中如何运行 groovy 程序_第19张图片

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

Groovy console

android studio 的标题栏进入 Tools/Groovy Console。这里也可以直接运行 groovy 程序(java类的和脚本类的都可以)。
Android Studio 中如何运行 groovy 程序_第25张图片

Groovy console 运行脚本类

非常简单,直接在编写点击左上角运行按钮即可
Android Studio 中如何运行 groovy 程序_第26张图片
上图就是点击Groovy Console后创建的,编辑代码点击左上角三角符号后运行结果如下
Android Studio 中如何运行 groovy 程序_第27张图片

Groovy console 运行java类

就比较麻烦了,我觉得也没有必要把java类在groovy console中运行,下面我还是说一下我踩过的坑和步骤吧

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

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

Android Studio 中如何运行 groovy 程序_第41张图片
在这里插入图片描述

你可能感兴趣的:(Gradle)