0

I spent a few hours last night trying to get my project to actually compile using JDK 1.7 on Android Studio 1.2 RC 3.

I read through several different post on this site and others from people that were having similar issues and I tried the solutions they offered like setting my project's bytecode version to 1.7, also I set my project's source compatibility & target compatibility to 1.7.

But I still keep getting the following error:

Information:Gradle tasks [:android:assembleDebug]
:android:preBuild UP-TO-DATE
:android:preDebugBuild UP-TO-DATE
:android:checkDebugManifest
:android:preReleaseBuild UP-TO-DATE
:core:compileJava
Warning:[options] bootstrap class path not set in conjunction with -source 1.6
 F:\MyProjects\Puzzle Pebbles\core\src\com\mtpmstudios\puzzlepebbles\Pebble.java
 Error:(27, 16) error: strings in switch are not supported in -source 1.6
 (use -source 7 or higher to enable strings in switch)
 Error:(54, 16) error: strings in switch are not supported in -source 1.6
(use -source 7 or higher to enable strings in switch)
1 warning
Error:Execution failed for task ':core:compileJava'.
> Compilation failed; see the compiler error output for details.
Information:BUILD FAILED
Information:Total time: 6.506 secs
Information:3 errors
Information:1 warning
Information:See complete output in console

I would really appreciate any insight on this issue I've been having. Thank you.

UPDATE

Here's my build.gradle file:

    android {
    buildToolsVersion '21.1.2'
    compileSdkVersion 21

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        instrumentTest.setRoot('tests')
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}
// needed to add JNI shared libraries to APK when compiling on CLI
tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask ->
    pkgTask.jniFolders = new HashSet<File>()
    pkgTask.jniFolders.add(new File(projectDir, 'libs'))
}
// called every time gradle gets executed, takes the native dependencies of
// the natives configuration, and extracts them to the proper libs/ folders
// so they get packed with the APK.
task copyAndroidNatives() {
    file("libs/armeabi/").mkdirs();
    file("libs/armeabi-v7a/").mkdirs();
    file("libs/x86/").mkdirs();

    configurations.natives.files.each { jar ->
        def outputDir = null
        if (jar.name.endsWith("natives-armeabi-v7a.jar")) outputDir = file("libs/armeabi-v7a")
        if (jar.name.endsWith("natives-armeabi.jar")) outputDir = file("libs/armeabi")
        if (jar.name.endsWith("natives-x86.jar")) outputDir = file("libs/x86")
        if (outputDir != null) {
            copy {
                from zipTree(jar)
                into outputDir
                include "*.so"
            }
        }
    }
}
task run(type: Exec) {
    def path
    def localProperties = project.file("../local.properties")
    if (localProperties.exists()) {
        Properties properties = new Properties()
        localProperties.withInputStream { instr ->
            properties.load(instr)
        }
        def sdkDir = properties.getProperty('sdk.dir')
        if (sdkDir) {
            path = sdkDir
        } else {
            path = "$System.env.ANDROID_HOME"
        }
    } else {
        path = "$System.env.ANDROID_HOME"
    }

    def adb = path + "/platform-tools/adb"
    commandLine "$adb", 'shell', 'am', 'start', '-n', 'com.mtpmstudios.puzzlepebbles.android/com.mtpmstudios.puzzlepebbles.android.AndroidLauncher'
}
// sets up the Android Eclipse project, using the old Ant based build.
eclipse {
    // need to specify Java source sets explicitely, SpringSource Gradle Eclipse plugin
    // ignores any nodes added in classpath.file.withXml
    sourceSets {
        main {
            java.srcDirs "src", 'gen'
        }
    }

    jdt {
        sourceCompatibility = 1.7
        targetCompatibility = 1.7
    }

    classpath {
        plusConfigurations += [project.configurations.compile]
        containers 'com.android.ide.eclipse.adt.ANDROID_FRAMEWORK', 'com.android.ide.eclipse.adt.LIBRARIES'
    }

    project {
        name = appName + "-android"
        natures 'com.android.ide.eclipse.adt.AndroidNature'
        buildCommands.clear();
        buildCommand "com.android.ide.eclipse.adt.ResourceManagerBuilder"
        buildCommand "com.android.ide.eclipse.adt.PreCompilerBuilder"
        buildCommand "org.eclipse.jdt.core.javabuilder"
        buildCommand "com.android.ide.eclipse.adt.ApkBuilder"
    }
}
// sets up the Android Idea project, using the old Ant based build.
idea {
    module {
        sourceDirs += file("src");
        scopes = [COMPILE: [plus: [project.configurations.compile]]]

        iml {
            withXml {
                def node = it.asNode()
                def builder = NodeBuilder.newInstance();
                builder.current = node;
                builder.component(name: "FacetManager") {
                    facet(type: "android", name: "Android") {
                        configuration {
                            option(name: "UPDATE_PROPERTY_FILES", value: "true")
                        }
                    }
                }
            }
        }
    }
}
dependencies {
}

repositories {
    mavenCentral()
    mavenLocal()
}
Droid1001
  • 38
  • 8
  • Please post your build.gradle file. My best guess is to check this out: http://stackoverflow.com/questions/17637179/how-to-set-source-1-7-in-android-studio-and-gradle – nerdy900 Apr 28 '15 at 17:01
  • I updated my original post to include the **build.gradle** file. Thank you but I've already seen that post and it still didn't compile afterwards. – Droid1001 Apr 28 '15 at 17:14
  • can you build this via command line? `gradlew assembleDebug`? – Jared Burrows Apr 28 '15 at 17:28
  • I tried to build it via the command line just now and I didn't get any errors or anything really but there wasn't an apk file in the build folder. – Droid1001 Apr 28 '15 at 17:39

1 Answers1

0

I assume you must have created the project on your IDE with complaince to JDK1.6 initially. The issue i find here is in your build script. If you have multiple JDK's installed and if u dynamically try to change the Java version of your project, the compiler will give priority to that version of Java on which your current project was created.

I faced the same issue while accessing JavaFX 8 components with both JDK7 and JDK8 installed. (My previous project was created with 1.7 as target platform)

You might fix this by creating a new project in the IDE with target JDK version to 1.7 or higher and then copying all your source files from previous project to the newly created project path. The build script created in this case by your IDE will be pointing to JDK 7 now.

Lalit Rao
  • 551
  • 5
  • 22
  • I included my **build.gradle** file in my original post, in case there is anything I should change there. But I guess if I can't figure out how to fix this then I'll have to create a new project. – Droid1001 Apr 28 '15 at 17:17