Android切换到gradle不编译JRE7代码功能

时间:2013-10-17 19:04:56

标签: android gradle android-studio

我将我的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中。请参阅this post

上的“使用Java 1.6编译的Android项目需要库”部分

1 个答案:

答案 0 :(得分:3)

您可以在android的{​​{1}}部分添加以下内容,将现有的Android应用程序/库模块升级到Java 7:

build.gradle

对于Java(非Android)模块,您应该在compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } 后面build.gradle添加以下内容:

apply plugin: 'java'

对于这两种类型的模块,您需要在File - >中手动更改项目的语言级别。项目结构 - >项目(或者您可以在sourceCompatibility = 1.7 targetCompatibility = 1.7 .idea/misc.xmlJDK_1_6手动编辑配置。

您可能还需要在JDK_1_7区块中将以下内容添加到.idea/compiler.xml(但请看看如何在没有它的情况下继续使用):

<component name="CompilerConfiguration">