我将我的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项目需要库”部分答案 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.xml
到JDK_1_6
手动编辑配置。
您可能还需要在JDK_1_7
区块中将以下内容添加到.idea/compiler.xml
(但请看看如何在没有它的情况下继续使用):
<component name="CompilerConfiguration">