Cómo configurar -source 1.7 en Android Studio y Gradle

177

Recibo el siguiente error cuando intento compilar mi proyecto en Android Studio:

Gradle: error: diamond operator is not supported in -source 1.6

Tengo 1.7 establecido como objetivo en todas las preferencias del proyecto que he encontrado. Además, la ruta que se muestra en los SDK del proyecto bajo 1.7 SDK es la ruta correcta para la instalación de java 1.7.

Incluso cuando ejecuto java -version en la terminal, me dice que estoy ejecutando en java 1.7.

He intentado configurar JAVA_HOME env variable para esto:

/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home

El error no desaparece. ¿Cómo elimino el error?

simekadam
fuente
¿Has sourceCompatibilityconfigurado tu build.gradle?
fge
Se agregó compatibilidad con Java 7 en las herramientas de compilación 19. Por favor, verifique mi respuesta editada.
Sergii Pechenizkyi

Respuestas:

289

Se agregó compatibilidad con Java 7 en las herramientas de compilación 19. Ahora puede usar funciones como el operador de diamante, captura múltiple, prueba con recursos, cadenas en interruptores, etc. Agregue lo siguiente a su build.gradle.

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 19
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

Se requiere Gradle 1.7+, Android Gradle Plugin 0.6. +.

Tenga en cuenta que solo intente con recursos requieren minSdkVersion19. Otras características funcionan en plataformas anteriores.

Enlace a la guía del usuario del complemento Android Gradle

Enlace para ver en qué se diferencian el origen y el destino

Sergii Pechenizkyi
fuente
1
¿Funciona esto solo en Android Studio o es posible hacer que funcione también en Eclipse con ADT?
Natix
1
Es posible con el último ADT para Eclipse. Consulte la descripción completa aquí: sites.google.com/a/android.com/tools/recent/…
Sergii Pechenizkyi
77
woohoo para interruptores de cadena!
codificador
10
Tenga en cuenta que probar con recursos solo se puede usar con API 19 o superior.
Alex Lockwood
73

Tal vez estas respuestas anteriores son antiguas, pero con el nuevo Android Studios 1, hace lo siguiente para ver el módulo que se ejecuta en 1.7 (o 1.6 si lo prefiere). Haga clic en Archivo -> Estructura del proyecto. Seleccione el módulo que desea ejecutar y luego en "Compatibilidad de origen" y "Compatibilidad de destino", seleccione 1.7. Haga clic en Aceptar".

Pantalla Estructura del proyecto de Android Studios 1

Simón
fuente
55
Supongo que esta es la respuesta correcta para el último estudio de Android. Ojalá pudiera hacer esto también una respuesta correcta ..
pravin
1
Esto es esencialmente lo mismo que la respuesta aceptada.
Kerem
1
Es solo una característica conveniente, insertará el código "compileOptions" descrito anteriormente en el archivo gradle.
user3259330
¿Cómo puedo configurar esto a 8?
Neon Warge
No puedo ver 1.8 y 1.9? A pesar de que Acerca de -> Ayuda dice que Android Studio está usando 1.8 JRE.
Srikar Reddy
14

Puede cambiarlo en la nueva versión de estudio de Android (0.8.X)

Archivo-> Otras configuraciones -> Configuración predeterminada -> Compilador (Expanda haciendo clic en la flecha izquierda) -> Compilador Java -> Puede cambiar la versión del código de bytes del proyecto aquí

ingrese la descripción de la imagen aquí

San
fuente
8

La última versión de Android Studio 1.4.

Haga clic en Archivo-> Estructura del proyecto-> Ubicación SDK-> Ubicación JDK.

También puede configurar la compatibilidad de la versión JDK del módulo individual yendo al Módulo (debajo de la ubicación del SDK) y editar la compatibilidad de origen en consecuencia. (nota, esto solo se aplica al Módulo Android).

Elye
fuente
Esta configuración es confusa, porque afecta a todos los proyectos, a pesar de que se denomina "Estructura del proyecto".
Oliver Hausler
5

Haga clic derecho en su proyecto> Abrir configuración de módulo> Seleccione "Proyecto" en la sección "Configuración de proyecto"

Cambie el SDK del proyecto a la última versión (puede ser API 21) y el nivel de idioma del proyecto a 7+

kunal
fuente
4

En la actualidad, Android no es compatible con Java 7, solo Java 6. Por lo tanto, actualmente no se admiten nuevas funciones en Java 7, como la sintaxis de diamante. Encontrar fuentes para soportar esto no es fácil, pero podría encontrar que el motor Dalvic está construido sobre un subconjunto de Apache Harmony que solo admitía Java hasta la versión 6. Y si verifica los requisitos del sistema para desarrollar aplicaciones de Android, también indica que se necesita al menos JDK 6 (aunque esto, por supuesto, no es una prueba real, solo una indicación). Y esto dice más o menos lo mismo que yo. Si encuentro algo más sustancial, lo agregaré.

Editar: Parece que se ha agregado compatibilidad con Java 7 desde que originalmente escribí esta respuesta; Comprueba la respuesta de Sergii Pechenizkyi .

blalasaadri
fuente
2
Aquí, una pregunta similar con un enlace sobre cómo superar el problema: stackoverflow.com/questions/14487682/…
blalasaadri
2

Utilice siempre la última versión del SDK para compilar:

compileSdkVersion 23

No afecta el comportamiento del tiempo de ejecución , pero le brinda las últimas funciones de programación.

DenisKolodin
fuente
2

Vaya a su Gradle y busque sourceCompatibility y cámbielo de 1.6 a 7 . Eso funcionó para mí al menos.

También puede acceder a la configuración de su módulo y establecer la compatibilidad de origen / destino en 1.7.

Ventana de configuración del módulo

Eso producirá el siguiente código en tu Gradle:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}
Feorice
fuente