Java – How to set -source 1.7 in Android Studio and Gradle

android-studiogradleintellij-ideajavajava-7

I'm getting following error when trying to compile my project in Android Studio:

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

I have 1.7 set as target in all project preferences I've found. Also the path displayed in project SDK's under 1.7 SDK is correct path to java 1.7 installation.

Even when I run java -version in terminal, it tells me I'm running on java 1.7.

I have tried to set JAVA_HOME env variable to this:

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

The error does not go away. How do I eliminate the error?

Best Answer

Java 7 support was added at build tools 19. You can now use features like the diamond operator, multi-catch, try-with-resources, strings in switches, etc. Add the following to your 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
    }
}

Gradle 1.7+, Android gradle plugin 0.6.+ are required.

Note, that only try with resources require minSdkVersion 19. Other features works on previous platforms.

Link to android gradle plugin user guide

Link to see how source vs target are different