如何从头开始设置 Android Studio 项目,让我可以使用 groovy

How to set up Android Studio project from scratch that allows me to use groovy

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

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

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

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

4 年后 Groovy 维护者仍然没有可重现的设置指南这一事实只是 Groovy 对 Android 没有未来的一个指标。我们早就应该看到有关 Groovy 的动态能力如何简化 Android 开发的模式的讨论,但这并没有发生。接下来我将尝试 Kotlin,乍一看它与 Groovy 非常相似,除了必需的类型注释之外,但最重要的是:人们不必与 Android Studio 如此激烈地斗争使用它。

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


自学之后,这是step-by-step我开始时想看的描述。我使用了来自多个来源的信息。 None 这些资源对我有用,它们在版本号和将内容插入构建脚本的位置方面有所不同。这些说明是尝试各种组合并填空的结果。

从欢迎屏幕,select "Start a new Android Studio project"。

填写应用名称和一个"company domain".

此页面无需更改。

此示例使用空白 Activity。

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

暂时忽略"rendering problem"。它将在稍后的编译过程中自行解决。单击两个打开的文件选项卡的叉号,关闭它们。

打开这个build.gradle(模块:app)文件:

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

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

让我们暂停一会儿来反思一下版本号。行数

            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。当您将鼠标指针悬停在此文本上时,会出现一个工具提示:

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

但是,对于这个 gradle-groovy-android-plugin 东西,没有出现这样的工具提示。

这里到底发生了什么?按照我的理解,这些名称和版本号标识了用于您的应用程序或用于构建您的应用程序的二进制组件的名称,但它们既不是 android 工作室的一部分,您也不希望找到并安装或自己编译。相反,此构建脚本指定了一个 repository 位置,希望可以从中下载这些二进制组件。函数 jcenter() 似乎 return 存储库的位置。当前,此存储库是 bintray.com.

要了解此 gradle groovy android 插件的最新版本,请使用您的网络浏览器访问 bintray.com 并使用其搜索功能。搜索 groovy-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'

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

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

所以它看起来像这样:

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

更改gradle文件后,gradle需要"sync"编辑。如果您完全退出 android studio 并重新启动它,gradle 将会同步,这就是我此时所做的。此图为重启后的同步:

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

触发同步。

同步完成后,使用 pull-down 菜单将左窗格从 "Android" 视图更改为 "Project" 视图:

现在至少在模拟器中构建并执行您的项目一次。我不确定这会改变什么,但是如果您现在不构建和执行您的项目,而一切仍然只是 java 源,那么在我们更改为 [后将找不到您的 groovy 源=274=]。您可以使用工具栏中的 运行 图标或键盘快捷键 shift-F10 构建和 运行 您的项目。

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

您现在将在上下文菜单的帮助下在主目录下创建一个额外的 "Java Folder":

一定要使用菜单项New->Folder->JavaFolder,不要New->Directory,以后会出问题。

在下一个屏幕中,

勾选复选框 "Change Folder Location" 并确保输入字段中的名称是 src/main/groovy.

如果您仍然打开那个 gradle 脚本,您会看到它已经过修改并在以 "sourceSets" 开头的行中包含新目录的名称。为了更好地衡量,请单击 gradle 同步图标以确保所有内容都已正确同步。

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

并输入这个 class 完全符合包名的名称:

确保包名拼写正确!

新包会​​出现在groovy文件夹中,里面是临时的javaclass.

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

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

文件扩展名 .java 简单地替换为 .groovy 扩展名。同样,您可以稍后创建新的 java classes 并将其文件重命名为 .groovy 当您实际想要创建 groovy classes 时。 您现在可以更改 activity 中的一些代码,以验证您实际上可以在 android 应用程序中拥有 groovy 代码。建议:

在res/layout/activity_groovy.xml文件中给"Hello World"文本视图一个id,像这样:

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

在模拟器中构建并执行: