Groovy CompileStatic на Android испортил Groovy Truth

В Groovy можно проверить коллекции для пустых и пустых просто, поместив эту переменную самостоятельно, если:

def collection = [ 'test' ] if(!collection) { //Collection is either null or empty, handle exceptional business here } 

Однако при размещении @CompileStatic в классе, который содержит такой код, он перестает работать (но только на Android) с ошибкой:

 02-16 20:49:03.837: E/AndroidRuntime(9013): org.codehaus.groovy.runtime.metaclass.MissingMethodExceptionNoStack: No signature of method: java.util.ArrayList.asBoolean() is applicable for argument types: () values: [] 

Это не похоже на запуск настольной версии.

Сделать больше контекста. Это сгенерированный проект LibGDX с тремя проектами (-core, -desktop, -android), где проект -core был преобразован в отличный проект. Проект -core ссылается, и зависимость проектов -desktop и -android

Desktop-версия работает без каких-либо проблем, независимо от того, аннотируются ли классы с аннотацией @CompileStatic , а Groovy Truth распознается должным образом.

С другой стороны, на андроиде возникает вышеупомянутая ошибка.

Я не использую библиотеку groove, потому что проект, который преобразуется в groovy, разделяется между обоими и Android.

Если это стоит того, вот содержание build.gradle на уровне проекта:

 buildscript { repositories { mavenCentral() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.0.0' classpath 'org.codehaus.groovy:gradle-groovy-android-plugin:0.3.5' } } allprojects { apply plugin: "eclipse" apply plugin: "idea" version = '1.0' ext { appName = 'CastleShuffle' gdxVersion = '1.5.4' roboVMVersion = '1.0.0-beta-04' box2DLightsVersion = '1.3' ashleyVersion = '1.3.1' aiVersion = '1.5.0' } repositories { mavenCentral() jcenter() maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } maven { url "https://oss.sonatype.org/content/repositories/releases/" } } } project(":desktop") { apply plugin: "java" dependencies { compile project(":core") compile "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion" compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop" compile "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop" compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop" } } project(":android") { apply plugin: "android" //apply plugin: "groovyx.grooid.groovy-android" configurations { natives } dependencies { compile project(":core") compile "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86" compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion" natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi" natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi-v7a" natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86" compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion" natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi" natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi-v7a" natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86" // compile 'org.codehaus.groovy:groovy:2.4.0:grooid' //Adding this causes a Dex exception where groovy class Bindable is referenced multiple times // compile 'org.codehaus.groovy:groovy-all:2.4.0' } } project(":core") { apply plugin: "groovy" dependencies { compile 'org.codehaus.groovy:groovy-all:2.4.0' compile "com.badlogicgames.gdx:gdx:$gdxVersion" compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion" compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion" } } tasks.eclipse.doLast { delete ".project" } 

Вам нужно использовать «Groove» версию Groovy для всех ваших модулей, иначе вы будете генерировать код, который использует среду выполнения, нацеленную на обычные JVM. Думаю, использование «2.4.1-grooid» для всех ваших модулей должно быть хорошим.

Intereting Posts
Android: всплывающее окно с ошибкой в ​​EditText не сдвигается вниз, когда клавиатура уходит Android Создать пользовательский запрос SearchView Search Уведомление GCM push работает после приложения Force Stop? Вставить контакт намерения, несколько телефонов / электронной почты / и т.д. В чем разница между аниматором и анимацией? Преобразование String в LatLng Android: используйте цвета подсветки по умолчанию в пользовательской кнопке Android Milliseconds с точки зрения времени Значение не обновляется onProgress для диапазона поиска Распознавание лица opencv возвращает одно и то же имя из БД для неизвестных пользователей Ссылка на Android-приложение не работает нормально Как проверить фрагмент с помощью эспрессо Очень длинная строка Eclipse Android Желательно ли использовать Activity.onAttachFragment или Fragment.onAttach для связи между Activity и вложенным фрагментом? Проверьте, играет ли музыка в API-интерфейсе проигрывателя Android.