La configuración de libGDX me permite usar Java 8 que se bloquea en Android

Soy nuevo en java / android, por lo que espero que esto sea algo bastante fácil de resolver.

He utilizado la configuración de libGDX para crear un proyecto, que luego importé a Android Studio. No sabía que la interfaz de Supplier sólo estaba disponible para Java 8, y la utilizaba en el módulo central, que hasta donde yo entiendo, se compila en una biblioteca que es compartida por todas las versiones de android / html / desktop / ios de la juego. La versión de escritorio funciona bien (tengo Java 8 instalado), pero mi aplicación androide se bloquea con un error NoClassDefFoundError (BTW, el mensaje de error estaba mostrando el nombre de las clases que escribí, y no Supplier , pero el error desapareció tan pronto como I Eliminado todas las referencias al Supplier y volvió cuando las agregé, así que al parecer el mensaje de error no muestra la clase de problema real).

Si intento usar Supplier en mi módulo android, ni siquiera me permitirá importar la clase, por lo que sabe que no es compatible con la versión Java, pero me dejará usarla en el módulo principal sin ninguna advertencia. . Estoy seguro de que la eliminación de referencias a Supplier resolverá el problema, pero esta corrección puede provocar errores de tiempo de ejecución más adelante si inadvertidamente uso cualquier característica de Java 8, por lo que no es una buena manera de solucionarlo.

No sé en qué parte del proyecto se va a usar Java 8, y parece que hay un montón de archivos .gradle, .xml y .iml que aparentemente están relacionados con la configuración. Aquí está mi archivo build.gradle en el módulo principal:

 apply plugin: "java" sourceCompatibility = 1.6 [compileJava, compileTestJava]*.options*.encoding = 'UTF-8' sourceSets.main.java.srcDirs = [ "src/" ] eclipse.project { name = appName + "-core" } 

El estudio de Android muestra la línea sourceCompatibility = 1.6 atenuada y dice que "Asignación no se usa" cuando vuelvo sobre ella. Así que eso puede ser parte del problema.

Mi archivo core.iml contiene también esta línea:

 <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false"> 

Además, aquí está la sección de core en el archivo raíz build.gradle :

 project(":core") { apply plugin: "java" dependencies { compile "com.badlogicgames.gdx:gdx:$gdxVersion" } } 

Entonces, ¿qué debo cambiar para evitar que me permita usar Java 8 en mi proyecto principal?

Creo que es necesario agregar el atributo sourceCompatibility con sourceCompatibility en gradle para orientar su versión de java .

  allprojects { apply plugin: 'java' sourceCompatibility = 1.6 targetCompatibility = 1.6 } 

También es necesario comprobar la ruta predeterminada de java en el archivo gradle.properties con la versión de su proyecto es el uso.

Usted necesita comprobar No se puede construir Java 1.8 incluso con la versión de Java adecuada en uso y Gradle encuentra erróneo JAVA_HOME a pesar de que está correctamente configurado para obtener más idea acerca de conjunto java compilar versión gradle.

  • AssetManager en LibGDX
  • Scene2d cómo manejar actor tocado (LibGDX)
  • Cómo compartir la captura de pantalla de la puntuación del juego libgdx en whatsapp y facebook?
  • Libgdx y Leadbolt
  • libGDX + com.google.android.gms: play-services: 7.0.0: android: dexDebug
  • Libgdx en el escritorio, cómo manejar la eliminación cuando la ventana está cerrada
  • Tomar la captura de pantalla en libgdx
  • Intentando ejecutar el juego de Android usando libgdx en Genymotion
  • TexturePacker de LibGDX con gradle
  • Evento no entregado al oyente
  • Uso de LibGDX sin Eclipse o Ant
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.