Groovy的2.4版本附带了对Android应用程序开发的官方支持http://docs.codehaus.org/display/GROOVY/Groovy+2.4+release+notes

以前使用eclipse进行Android开发,没有使用Android Studio或使用Gradle的经验,现有的使用Android Studio设置常规android项目的说明(例如http://docs.groovy-lang.org/docs/next/ html / documentation / tools-groovyc.html#section-androidhttps://github.com/groovy/groovy-android-gradle-plugin ,或http://hosain.net/2015/02/07/getting-started -with-android-development-using-groovy-2.4-and-android-studio.html )太模糊了,不适合我,而且他们使用的版本号的差异令人困惑。

我想看看适用于Android的Android Studio 1.2.1.1的详细分步说明,并解释如何确定版本号。

===============>>#1 票数:20 已采纳

编辑:2019年,问题和答案差不多4年后,下面描述的方法不再适用于当前的Android Studio版本(3.3.2)。 我找不到仍然有效的依赖项版本,Gradle抱怨无法下载某些依赖项。

4年后,Groovy维护人员仍然没有可重现的设置指南这一事实只是Groovy for Android没有前途的一个指标。 我们应该看到很久以前关于Groovy的动态能力如何简化Android开发的模式的讨论,但这种情况并没有发生。 接下来我将尝试使用Kotlin,除了所需的类型注释之外,它看起来与Groovy相似,但最重要的是:一个人不必如此努力地对抗Android Studio来使用它。

最初的答案如下,它是针对一个非常具体的Android Studio版本,扩展了猜测如何在未来的Android Studio版本中调整依赖版本。 根据评论,这一直有效,直到Android Studio 3.0.1。


在我自己学习如何做之后,这是我开始时想要阅读的逐步描述。 我使用了许多来源的信息。 这些资源都不适用于我,它们的版本号和插入构建脚本的位置不同。 这些说明是尝试各种组合并填充一些空白的结果。

Android Studio欢迎屏幕

在欢迎屏幕上,选择“启动新的Android Studio项目”。

新项目向导,第1页

填写应用名称和“公司域名”。

新项目向导,第2页

此页面无需更改。

新项目向导,第3页

此示例使用空白活动。

新项目向导,第4页

此示例使用名称GroovyActivity作为主Android屏幕。 现在创建了新项目。 当android studio完成项目创建时,它显示两个打开的文件,如下所示:

新创建的项目,打开初始文件

暂时忽略“渲染问题”。 它将在以后的编译过程中自行解决。 通过单击其选项卡的十字形来关闭这两个打开的文件。

打开此build.gradle(Module:app)文件:

应用程序的build.gradle脚本,原始内容

在第一行之前插入以下代码:

    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:1.1.0'
            classpath 'org.codehaus.groovy:gradle-groovy-android-plugin:0.3.6'
        }
    }

在gradle脚本顶部插入代码

让我们暂停一下,以反映版本号。 线条

            classpath 'com.android.tools.build:gradle:1.1.0'

            classpath 'org.codehaus.groovy:gradle-groovy-android-plugin:0.3.6'

包含版本号。 你怎么知道在这里插入哪个版本号? 在您阅读这些说明时,可能有新版本,除非您有特定的版本要求,否则您将需要使用gradle脚本中使用的最新版本。

您如何了解最新版本? 这取决于:

请注意,编辑器突出显示了带有黄色背景颜色的com.android.tools.build:gradle:1.1.0。 将鼠标指针悬停在此文本上时,会出现工具提示:

工具提示表明这个gradle事物有更新版本

所以似乎android studio知道这个东西的最新版本并建议你使用它。 听取建议并将此版本号更新为您的android studio版本所指示的版本号。

但是,这个gradle-groovy-android-plugin事件没有出现这样的工具提示。

无论如何,这里发生了什么? 我理解它的方式,这些名称和版本号识别用于您的应用程序或用于构建您的应用程序的二进制组件的名称,但它们既不是android studio的一部分,也不是您希望自己查找和安装或编译它们。 相反,此构建脚本指定了存储库位置,希望可以从中下载这些二进制组件。 函数jcenter()似乎返回存储库的位置。 目前,此存储库是bintray.com。

要了解这个gradle groovy android插件的最新版本,请使用您的webbrowser访问bintray.com并使用其搜索功能。 搜索groovy-android-plugin。 在我写这篇文章的时候,结果的开头看起来像这样:

bintray搜索结果groova-android-plugin

列出的结果数量有点令人沮丧。 我希望他们在那里有一些相关的排序。 搜索第一页,我只看到2个相关的匹配,最新的版本号是0.3.6。

了解了最新的版本号(在撰写本文时),gradle脚本的正确启动是以下代码:

    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:1.2.3'
            classpath 'org.codehaus.groovy:gradle-groovy-android-plugin:0.3.6'
        }
    }

回到修改gradle脚本,在“apply plugin:'com.android.application'”行之后插入以下代码:

    apply plugin: 'groovyx.grooid.groovy-android'

使用groovy插件的gradle脚本“已应用”

最后,在gradle脚本的末尾附近插入一行

    compile 'org.codehaus.groovy:groovy:2.4.1:grooid'

所以它看起来像这样:

添加依赖于特定于android的groovy编译器

同样,这里有一个版本号,你可以通过搜索* grooid.jar找到bintray的最新版本(是的,以星号作为第一个字符)。 结果列表跨越两页,在第二页上我发现2.4.3是最新版本:

searchin bintray获取最新版本的android特定groovy编译器

更改gradle文件后,gradle需要“同步”。 如果你完全退出android studio并重新启动它,gradle会同步,所以这就是我在这一点上所做的。 此图显示重启后的同步:

gradle同步

后来我发现工具栏中有这个图标

用于启动Gradle同步的工具栏图标

触发同步。

同步完成后,使用下拉菜单将左窗格从“Android”视图更改为“项目”视图:

左窗格下拉菜单正在运行中

现在至少在模拟器中构建并执行一次项目。 我不确定这会发生什么变化,但是如果你现在不构建和执行你的项目,虽然一切都只是java源代码,那么在我们改为groovy后你的groovy源代码将无法找到。 您可以使用工具栏中的运行图标或键盘快捷键shift-F10来构建和运行项目。

在模拟器中执行项目后,返回左侧窗格,该窗格仍显示“项目”视图。 在此视图中,导航到app / src / main目录,该目录当前包含子目录java和res,以及AndroidManifest.xml文件。

现在,您将在上下文菜单的帮助下在main下创建一个额外的“Java文件夹”:

用于创建新Java文件夹的上下文菜单

一定要使用菜单项New-> Folder-> Java Folder,而不是 New-> Directory,这会在以后引起问题。

在下一个屏幕中,

新目录的名称

勾选“更改文件夹位置”复选框,并确保输入字段中的名称为src / main / groovy。

如果您仍然打开了该gradle脚本,您将看到它已被调整并包含以“sourceSets”开头的行中新目录的名称。 为了更好地衡量,请单击gradle同步图标以确保所有内容都已正确同步。

用于启动Gradle同步的工具栏图标

接下来,您希望实现新的groovy文件夹包含应用程序包名称的正确包路径。 我发现正确实现这一目标的唯一方法是使用groovy文件夹的上下文菜单创建一个新的临时java类,

用于在groovy文件夹中创建新类的上下文菜单

并输入使用包名称完全限定的此类的名称:

输入新类的完整包名称

确保包名称的拼写正确!

新包将出现在groovy文件夹中,并在其中,即临时java类。

所有groovy类以及以某种方式使用groovy类的所有java类都必须位于src / main / groovy目录下,而不是src / main / java目录下。 我们现在可以将Activity类从java目录树拖到groovy目录下面的同一个包中:

将活动移动到groovy目录

现在可以删除临时类(使用上下文菜单),通过从上下文菜单中选择Refactor-> Rename File,可以将Activity类从.java迁移到.groovy。

Java通过重命名文件到Groovy

文件扩展名.java只是替换为.groovy扩展名。 以同样的方式,您可以稍后创建新的Java类,并在您真正想要创建groovy类时将其文件重命名为.groovy。 您现在可以更改活动中的一些代码,以验证您是否可以在Android应用程序中实际拥有groovy代码。 建议:

在res / layout / activity_groovy.xml文件中为“Hello World”文本视图提供一个id,如下所示:

id通过布局xml文件

然后,使用groovy的字符串插值以编程方式更改此视图显示的文本:

更改标签的文字

在模拟器中构建和执行:

在模拟器中使用groovy代码执行应用程序,在TextView中显示TextView的id

  ask by Ludwig Schulze translate from so

未解决问题?本站智能推荐:

1回复

在Android Studio Gradle项目中运行groovy shell

当我尝试在Android Studio gradle项目中启动Groovy shell时,我收到错误 我在MacBook Pro上运行Android Studio 0.3.7。 任何想法如何解决?
4回复

在android studio中导入项目时出现Resolve错误,无法加载类'org.codehaus.groovy.runtime.typehandling.ShortTypeHandling'

由于以下错误,我无法在AndroidStudio中导入项目: 我不知道这个项目。 为什么我收到此错误以及如何解决此问题。
1回复

Android Studio无法编译org / codehaus / groovy / runtime / StringGroovyMethods

Android Studio gradle出现如下错误: 错误:(36,0)原因:org / codehaus / groovy / runtime / StringGroovyMethods打开文件 无法针对最新版本的Android Studio Canary版本解决此问题。 我
4回复

Android Studio无法加载类'org.codehaus.groovy.runtime.typehandling.ShortTypeHandling'

我安装了Android Studio,当我尝试从gradle导入项目时,出现了解决错误 : 无法加载类'org.codehaus.groovy.runtime.typehandling.ShortTypeHandling'。 我删除了我的Users .gradle文件夹中的文件
1回复

Android Studio 4.1.1

更新android studio 4.1.1之后,在创建新项目时出错,因为Could not get unknown property 'com' for root project 'MyApp' of type org.gradle.api.Project. * Exception is: gro
1回复

如何使用Groovy从Java文件获取Annotation值?

我想使用Android Studio和Groovy在Android中打印Java文件的注释详细信息。
2回复

在Intellij / Android Studio中调试Gradle构建文件

我有时会遇到Gradle的晦涩问题。 有时,如果我正在读取源文件或添加println语句以弄清楚我可以做什么以及状态是什么,它会有所帮助。 但是我真的很想只是放置一个断点并列出变量的内部状态。 使用Android Studio或IntelliJ可以做到吗? 我也很想按住Ctrl键
3回复

升级到Android Studio 1.5.1后,build.gradle文件错误和警告

这是我的build.gradle文件。 升级到AS 1.5.1并尝试编译/同步后,我在最后一行收到了错误,但程序执行正常: 错误在上面的最后一行( compile 'com.android....-v4:22.2.1 )。 它说: 该支持库不应使用与compileSdkVe
1回复

gradle 2.2.2,android studio,没有方法签名:java.lang.Boolean.call()适用于参数类型:

我已经将一个eclipse的项目导入到android studio,我遇到了这个问题,android studio 2.2.2,gradle 2.2.2。 错误:(6,1)评估项目':projectName'时发生问题。 没有方法签名:java.lang.Boolean.cal
2回复

如何从gradle build脚本启动groovy脚本? [重复]

这个问题已经在这里有了答案: 从Gradle 1答案 运行Groovy脚本 我尝试定义一些Groovy模块,该模块在Apply apply plugin: 'android'附近有2个不同的脚本apply plugin: 'android' Android Stud