2013-10-17 24 views
5

我將我的Android應用程序移動到Android Studio而不切換到Gradle。現在我想搬到Gradle。該應用程序在切換到Gradle之前在Android Studio中編譯,但現在我已經設置了Gradle,它不會編譯字符串切換語句或鑽石操作符。我得到的錯誤是Android切換到gradle不會編譯JRE7代碼功能

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文件。

UPDATE 我嘗試添加下列到的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編譯庫」部分this post

+0

你解決問題吧? –

+0

其實我放棄了嘗試。我將代碼中的所有這些地方都改回了JRE6標準,並且只是和它一起生活。如果可以的話,我很樂意讓它工作,但我無法承受它的痛苦。 – laochiv

+0

我確實解決了這個問題。順便說一句,如果所有其他方法失敗,你懶得弄清楚爲什麼,有一個類似大錘的解決方案:http://stackoverflow.com/a/21051506/1418097 –

回答

3

您可以將現有的Android應用程序/庫模塊升級到Java 7中加入你的build.gradleandroid部分如下:

compileOptions { 
    sourceCompatibility JavaVersion.VERSION_1_7 
    targetCompatibility JavaVersion.VERSION_1_7 
} 

對於Java(非Android)模塊,你應該添加下列到build.gradle只是apply plugin: 'java'後:

sourceCompatibility = 1.7 
targetCompatibility = 1.7 

對於這兩種類型的模塊,你將需要在文件 - >項目結構 - >項目中手動更改項目的語言級別(或者您可以手動編輯.idea/misc.xml中的配置從JDK_1_6JDK_1_7)。

您可能還需要添加以下內容.idea/compiler.xml,在<component name="CompilerConfiguration">塊(但是看你上沒有它在前):

<bytecodeTargetLevel target="1.7" />