Проблема в том, что подключаемый модуль Groovy Android Gradle (чтобы Groovy работал на Android) не просто работает с подключаемым модулем Android в версии 1.1.0-rcX
.
Вот очень интересный фрагмент кода непосредственно из groovyx.grooid.GroovyAndroidPlugin
версии 0.3.5
(текущая последняя, вот источник)
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
и 0.10.0
(да, я знаю - эти разработчики Google меняют там все :[ ). Итак, давайте взглянем на этот класс создания задач в 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
ничего подобного нет. Более того, API com.android.build.gradle.AppPlugin
полностью изменен, поэтому простым if(version)
это не исправить.
Я предполагаю, что нет никаких шансов, что плагин Groovy Android Gradle будет работать с модульными тестами (начиная с 1.1.0
), пока авторы не обновят плагин.
Подождем тогда.
person
Wojtek Erbetowski
schedule
18.02.2015