Groovy 在 Android - 如何 运行 你好世界

Groovy in Android - how to run Hello world

我在引用我创建的 groovy class 时遇到问题。以下是步骤:

我的 build.gradle 文件具有所有必需的依赖项:

apply plugin: 'com.android.application'

应用插件:'groovyx.grooid.groovy-android'

android{ 编译SDK版本22 buildToolsVersion "21.1.2"

packagingOptions {
    // workaround for 
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/groovy-release-info.properties'
}

defaultConfig {
    applicationId "com.example.uen.myrxjavaandroidproject"
    minSdkVersion 17
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.netflix.rxjava:rxjava-android:0.20.7'
    compile 'com.squareup:otto:1.3.5'
    compile 'org.codehaus.groovy:groovy:2.4.3:grooid'
}

与gradle同步成功。

然后我在 main 下创建了一个名为 'groovy' 的文件夹,这样我的项目结构如下所示:

注意我有一个名为 "Hello" 的 groovy class,它看起来像这样:

public class Hello {
String name;

public void sayHello() {
    System.out.println("Hello "+getName()+"!");
}

public void setName(String name) {
    this.name = name;
}

public String getName() {
    return name;
}

}

现在在我的 MainActivity.java class 中,我尝试实例化 Hello class 但它没有被识别。我这样做:

Hello myHello = new Hello();

我做错了什么?

如果您想使用来自 Java 来源的 Groovy class,那么您的 Java 文件 必须 在 "groovy" 目录中找到。这样做是为了强制联合编译(Java classes 消耗 Groovy classes 或其他方式)。

独立于此,为了 Groviness,您的 Hello Groovy class 可以减少为:

class Hello {
   String name
   void sayHello() {
       println "Hello $name!"
   }
}