5

我将我的 android 应用程序移到了 Android Studio,而没有切换到 Gradle。现在我想搬到 Gradle。该应用程序在切换到 Gradle 之前在 Android Studio 中编译,但现在我已经设置好了 Gradle,它不会编译 String Switch 语句或菱形运算符。我得到的错误是

Gradle: error: strings in switch are not supported in -source 1.6
(use -source 7 or higher to enable strings in switch)

我通过打印确保我在 JRE 7 上运行

System.getProperty("java.version")

在一个任务中。输出是

1.7.0_25

最让我困惑的是“-source 1.6”和“use -source 7”之间的差异。但我知道这两个都是 Java sdk 的名称,所以也许标题只是混淆了。

我需要设置 Gradle 设置吗?或者这在 Gradle 中是不可能的?如果不是,那么为什么它在没有 Gradle 的情况下工作会令人困惑。

需要注意的是,我的项目的无 Gradle 版本运行的是默认的 Android Studio 构建。我没有编写 ant 脚本或 maven 脚本来构建它。其中之一可能是它的构建方式,但我没有任何项目特定的文件。只是 Android Studio .iml 文件。

更新 我尝试将以下内容添加到 build.gradle android{} 部分

compileOptions {
   sourceCompatibility = org.gradle.api.JavaVersion.VERSION_1_7
   targetCompatibility = org.gradle.api.JavaVersion.VERSION_1_7
}

但是 .class 文件无法构建,并且它没有包含在 apk 中。请参阅本文的“Android 项目需要使用 Java 1.6 编译的库”部分

4

1 回答 1

3

android您可以通过在您的部分添加以下内容将现有的 Android 应用程序/库模块升级到 Java 7 build.gradle

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}

对于 Java(非 android)模块,您应该在后面添加以下build.gradle内容apply plugin: 'java'

sourceCompatibility = 1.7
targetCompatibility = 1.7

对于这两种类型的模块,您需要在 File -> Project Structure -> Project 中手动更改项目的语言级别(或者您可以在.idea/misc.xmlfrom JDK_1_6to中手动编辑配置JDK_1_7)。

您可能还需要将以下内容添加到块.idea/compiler.xml中的 , <component name="CompilerConfiguration">(但请先查看没有它的情况):

<bytecodeTargetLevel target="1.7" />
于 2014-06-17T22:43:19.263 回答