我正在玩 android 和 android-annotiations,为什么不玩 groovy 呢……也许太多了 :D
AndroidAnnotations,在APT(Android Processing Tools)的帮助下生成可以在源代码中使用的帮助类,并且这个源代码在APT创建之前编译......
Groovy 是一种很棒的语言,可以在 Android 中运行,并且在 swissknife 的帮助下可以创建一个快速应用程序,这里有几个例子。
是否可以混合使用这两种方法?我想不是,但我可以问一下:)
查看这段代码...
构建.gradle
buildscript {
repositories {
jcenter()
mavenLocal()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
classpath 'com.github.dcendents:android-maven-plugin:1.2'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
classpath 'org.codehaus.groovy:gradle-groovy-android-plugin:0.3.6'
}
}
apply plugin: 'com.android.application'
apply plugin: 'groovyx.grooid.groovy-android'
...
dependencies {
...
compile 'com.github.batuypn:SmartConfigLibrary:v1.0.6'
代码
...
import groovy.transform.CompileStatic
import batuypn.android.smartconfiglibrary.SmartConfigLibrary_
import batuypn.android.smartconfiglibrary.SmartConfigLibrary_.*
// @CompileStatic
class SmartConfigActivity extends Activity implements SmartConfigLibrary_.Callback {
private SmartConfigLibrary_ smartConfigLibrary;
...
错误
SmartConfigActivity.groovy: 16: unable to resolve class SmartConfigLibrary_.Callback
@ line 16, column 1. class SmartConfigActivity extends Activity implements SmartConfigLibrary_.Callback { ^1 error
:compileDebugGroovy FAILED
最佳答案
从 Gradle 2.5 开始,您可以在 Groovy 源代码上使用“注释处理”。这在技术上不是 Groovy 处理,因为实际上 Gradle 强制 Groovy 编译器创建 Java stub ,然后处理该 stub 。处理器将创建 Java 源代码,这些源代码将在联合编译中与 Groovy 一起编译。这意味着您只能在 Groovy 构造上使用注释,这些构造在 Java 语言中具有等效项。但基本上这应该不是问题,因为处理器设计用于 Java。此外,您只能使用此功能来生成新类,而不能修改现有类,就像 lombok 以一种非常骇人听闻的方式所做的那样。从用户的角度来看,这个 Groovy 处理应该是透明的,不管它背后的技术如何。
我创建了一个示例项目来演示:https://github.com/WonderCsabo/androidannotations/tree/groovyExample/examples/gradle
编辑:android-apt
插件现在支持 Groovy Android 处理,因此 Gradle 配置更容易。我更改了上面的示例以利用 android-apt
。
您还可以添加 Java 源代码并对其进行处理,生成的类将可用于 Groovy。
关于Android + Groovy + Android 注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31160831/