Android Studio 中运行 groovy 程序的方法图文详解
Groovy简介
Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy代码能够与Java代码很好地结合,也能用于扩展现有代码。由于其运行在JVM上的特性,Groovy也可以使用其他非Java语言编写的库。
Groovy是用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。
Groovy是JVM的一个替代语言(替代是指可以用Groovy在Java平台上进行Java编程),使用方式基本与使用Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,设计时充分考虑了Java集成,这使Groovy与Java代码的互操作很容易。(注意:不是指Groovy替代java,而是指Groovy和java很好的结合编程。
运行groovy程序
首先由几个需要注意的地方
1.最好不要在JavaLibraymodule以外的其他类型module,运行groovy程序,脚本类的还问题不大,如果是在GroovyConsole运行java类的groovy程序时,就明显无法执行了。
因为groovy插件和android插件不兼容,所以不能在Android相关的module上使用groovy。
工程build失败,原因如下:
Causedby:com.android.build.gradle.internal.BadPluginException:The'java'pluginhasbeenapplied,butitisnotcompatiblewiththeAndroidplugins.
2.虽然不推荐在JavaLibrary之外的其他模块运行groovy程序,但是只要把该模块的buildgradle文件改为以下内容,脚本类和java类groovy程序还是能执行的,但是这也失去了该module的意义了吧,所以还是推荐使用JavaLibrary运行groovy程序,当然如果只是学习groovy都为所谓。
applyplugin:'groovy' dependencies{ implementationfileTree(dir:'libs',include:['*.jar']) implementationlocalGroovy() }
applyplugin:‘groovy'会引入groovy插件,groovy插件继承了java插件。implementationlocalGroovy()会引入Gradle所带的Groovy库。
还是上面讲过的Android和groovy插件不能同时存在,即下图这种方式是不允许的
java-library插件和groovy插件可以同时存在
根据上述需要注意的问题,正确步骤如下
1.新建一个JavaLibrarymodule
2.修改该module下的buildgradle文件,如下
3.src/main目录下新建groovy文件夹,并新建Test.groovy文件
1、运行Java式的Groovy
按以上步骤完成后,编写demo如下,点击运行即可
applyplugin:'groovy' dependencies{ implementationfileTree(dir:'libs',include:['*.jar']) implementationlocalGroovy() }
虽然运行成功了,但是提示
DeprecatedGradlefeatureswereusedinthisbuild,makingitincompatiblewithGradle6.0.
此版本中使用了不推荐使用的Gradle功能,使其与Gradle6.0不兼容。
回到当前module下的build.gradle文件,添加如下代码:
taskrenameGroovyToJava{ doLast{ delete"$buildDir/classes/java" Filefile=newFile("$buildDir/classes/groovy") printlnfile.renameTo("$buildDir/classes/java") } }
同步后,点击运行
1.1原理
点击运行后,通过查看androidstudio控制台信息发现,它执行了compileJavaTask,于是将compileGroovyTask附着在compileJava后面,compileGroovytask完成后,再将build/classes/groovy文件夹重命名为java。从而使androidstudio可以执行groovy编译后的class文件。
前后对比如下:
2、脚本式的Groovy
1.在Test.groovy相同路径下创建新的groovy文件,如下
2.编写groovy文件,如下:
3.找到工具栏的这个地方,选择EditConfigurations...,在弹出的页面点击左上角的加号AddNewConfiguration,再选择groovy
4.然后只需要填写Name、Scriptpath就可以,Name随便写,跟groovy文件名相同即可,Scriptpath就选择上面MyGroovy类的路径。
5.现在工具栏如下,点击下图中红款中的绿三角,运行groovy程序
运行结果如下
注意
脚本类groovy的配置方法,同样可以用来执行Java类的groovy,但java类的配置方法不能运行脚本类的groovy。上面名为Test.groocy的Java类的groovy按照脚本类groovy的配置方法配置完成后运行如下:
Groovyconsole
androidstudio的标题栏进入Tools/GroovyConsole。这里也可以直接运行groovy程序(java类的和脚本类的都可以)。
Groovyconsole运行脚本类非常简单,直接在编写点击左上角运行按钮即可
上图就是点击GroovyConsole后创建的,编辑代码点击左上角三角符号后运行结果如下
Groovyconsole运行java类就比较麻烦了,我觉得也没有必要把java类在groovyconsole中运行,下面我还是说一下我踩过的坑和步骤吧
我之前创建的module是AndroidLibrary,该module的名字是groovy,然后buildgradle文件把Android插件去掉了,如下图
然后我们在新的GroovyConsole中随便编写一个class,代码如下:
点击运行,选择Run'Test1.main()':
选择Run'Test1.main()'后弹框如下:
上面已经提及到了,以上都是我在名为groovyAndroidLibrarymodule下进行的操作
选择完module后,提示如下:
所以还必须创建一个名为Test1的class文件,那我们问什么还要使用GroovyConsole呢,直接运行java类的groovy程序就行了
然后继续按上述步骤执行,这次全部OK了
点击Run之后,运行结果如下:
上面是正常的流程,不管是什么类型的module,只要buildgradle按上面配置,然后一步一步执行都能正常运行。
但是我之前把groovy插件和Android插件放到了一起,如下:
虽然build失败如下,但我没有理会:
这个时候我们还是按上面GroovyConsole执行java类程序正常的步骤执行,会提示如下:
Cause:compileSdkVersionisnotspecified.Pleaseaddittobuild.gradle
即原因:未指定compileSdkVersion,请将其添加到build.gradle
然后我们把compileSdkVersion添加到buildgradle文件中,如下:
再次按照GroovyConsole执行java类程序正常步骤执行,提示如下:
The'java'pluginhasbeenapplied,but
itisnotcompatiblewiththeAndroidplugins.
已经应用了“java”插件,但它与Android插件不兼容。还是一开始build提示的问题,所以说最好在JavaLibrary执行groovy程序
到此这篇关于AndroidStudio中运行groovy程序的方法图文详解的文章就介绍到这了,更多相关AndroidStudio运行groovy程序内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。