问题是 Groovy Android Gradle 插件(让 Groovy 在 Android 上工作)不只是在版本中与 Android 插件一起使用1.1.0-rcX
.
这是直接来自的一段非常有趣的代码groovyx.grooid.GroovyAndroidPlugin
, 版本0.3.5
(当前最新的,这是source https://github.com/groovy/groovy-android-gradle-plugin/blob/master/src/main/groovy/groovyx/grooid/GroovyAndroidPlugin.groovy#L123)
def getRuntimeJars(Project project, plugin) {
int index
switch (getAndroidPluginVersion(project)) {
case ~/0\.9\..*/:
index = 0
break
case ~/0\.10\..*/:
case ~/0\.11\..*/:
case ~/0\.12\..*/:
case ~/0\.13\..*/:
case ~/0\.14\..*/:
case ~/1\.0\..*/:
index = 1
break
default:
index = RUNTIMEJARS_COMPAT.size()-1
}
def fun = RUNTIMEJARS_COMPAT[index]
fun(plugin)
}
和定义RUNTIMEJARS_COMPAT
:
private static List RUNTIMEJARS_COMPAT = [
{ it.runtimeJars },
{ it.bootClasspath }
]
因此,API 必须在 Android Gradle 之间发生更改0.9.x
and 0.10.0
(是的,我知道 - 那些谷歌开发人员改变了那里的一切:[)。那么让我们看看Android Plugin版本中的问题制作类1.0.0
:
> javap -cp [path to proper jar] com.android.build.gradle.AppPlugin:
public class com.android.build.gradle.AppPlugin extends com.android.build.gradle.BasePlugin implements org.gradle.api.Plugin<org.gradle.api.Project> {
...
public java.util.List super$2$getBootClasspath();
...
是的!这是我们需要的方法(来自父级com.android.build.gradle.BasePlugin
班级)。现在版本里没有类似的东西了1.1.0-rc3
。更重要的是,APIcom.android.build.gradle.AppPlugin
完全改变了,所以这不是一个简单的问题if(version)
解决这个问题。
我想没有机会让 Groovy Android Gradle 插件与单元测试一起工作(因为1.1.0
)直到作者更新插件。
那我们就等等吧。