如何在 Android Studio 和 Gradle 中设置 -source 1.7

Posted

技术标签:

【中文标题】如何在 Android Studio 和 Gradle 中设置 -source 1.7【英文标题】:How to set -source 1.7 in Android Studio and Gradle 【发布时间】:2013-07-12 07:27:01 【问题描述】:

尝试在 android Studio 中编译我的项目时出现以下错误:

Gradle: error: diamond operator is not supported in -source 1.6

在我找到的所有项目首选项中,我都将 1.7 设置为目标。项目SDK在1.7 SDK下显示的路径也是java 1.7安装的正确路径。

即使我在终端中运行 java -version,它也会告诉我我正在运行 java 1.7。

我尝试将 JAVA_HOME 环境变量设置为此:

/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home

错误不会消失。如何消除错误?

【问题讨论】:

你的 build.gradle 中是否设置了 sourceCompatibility 在构建工具 19 中添加了 Java 7 支持。请检查我编辑的答案。 【参考方案1】:

在构建工具 19 中添加了 Java 7 支持。您现在可以使用菱形运算符、multi-catch、try-with-resources、开关中的字符串等功能。将以下内容添加到您的 build.gradle

android 
    compileSdkVersion 19
    buildToolsVersion "19.0.0"

    defaultConfig 
        minSdkVersion 7
        targetSdkVersion 19
    

    compileOptions 
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    

需要 Gradle 1.7+,Android gradle 插件 0.6.+。

请注意,仅尝试使用资源需要minSdkVersion 19。其他功能适用于以前的平台。

Link to android gradle plugin user guide

Link to see how source vs target are different

【讨论】:

这只能在 Android Studio 中工作,还是可以在带有 ADT 的 Eclipse 中也能做到这一点? 可以使用最新的 ADT for Eclipse。在此处查看完整描述:sites.google.com/a/android.com/tools/recent/… 哇哦换弦! 请注意,try-with-resources 只能用于 API 19 或更高版本。【参考方案2】:

也许上面的这些答案是旧的,但是对于新的 Android Studios 1,您执行以下操作以查看要在 1.7(或 1.6,如果您愿意)上运行的模块。单击文件 --> 项目结构。选择要运行的模块,然后在“源兼容性”和“目标兼容性”下,选择 1.7。点击“确定”。

【讨论】:

我想这是最新 android-studio 的正确答案。希望我能把这也是一个正确的答案.. 这与接受的答案基本相同。 这只是一个方便的功能,它将前面描述的“compileOptions”代码插入到gradle文件中。 如何设置为 8? 我看不到 1.8 和 1.9?尽管 About -> Help 说 Android studio 使用的是 1.8 JRE。【参考方案3】:

您可以在新的 Android Studio 版本(0.8.X)中更改它

文件-> 其他设置-> 默认设置-> 编译器(点击左箭头展开)-> Java 编译器-> 您可以在此处更改项目字节码版本

【讨论】:

【参考方案4】:

最新的 Android Studio 1.4。

点击文件->项目结构->SDK位置->JDK位置。

您还可以通过转到模块(SDK 位置下方)来设置单个模块的 JDK 版本兼容性,并相应地编辑源兼容性。 (注意,这仅适用于 Android 模块)。

【讨论】:

此设置令人困惑,因为它会影响所有项目,即使它被命名为“项目结构”。【参考方案5】:

右键单击您的项目>打开模块设置>在“项目设置”部分中选择“项目”

将项目 SDK 更改为最新(可能是 API 21)并将项目语言级别更改为 7+

【讨论】:

【参考方案6】:

目前,Android 不支持 Java 7,仅支持 Java 6。因此目前不支持 Java 7 中的新功能,例如菱形语法。 找到支持这一点的资源并不容易,但我发现 Dalvic 引擎是基于 Apache Harmony 的一个子集构建的,它只支持 Java 到版本 6。如果你查看 system requirements 开发 Android 应用程序它还指出至少需要 JDK 6(尽管这当然不是真正的证据,只是一个指示)。 this 和我说的差不多。如果我发现任何更实质性的内容,我会添加它。

编辑: 自从我最初写这个答案以来,似乎已经添加了 Java 7 支持;检查 Sergii Pechenizkyi 的答案。

【讨论】:

这里有一个类似的问题,上面有一个关于如何解决问题的链接:***.com/questions/14487682/…【参考方案7】:

始终使用最新的 SDK 版本进行构建:

compileSdkVersion 23

不会影响运行时行为,但会为您提供最新的编程功能。

【讨论】:

【参考方案8】:

进入您的 Gradle 并查找 sourceCompatibility 并将其从 1.6 更改为 7。这至少对我有用。

您还可以进入模块设置并将Source/Target Compatibility设置为1.7。

Module settings window

这将在您的 Gradle 中生成以下代码:

compileOptions 
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7

【讨论】:

以上是关于如何在 Android Studio 和 Gradle 中设置 -source 1.7的主要内容,如果未能解决你的问题,请参考以下文章

将签名的 apk 从 android studio 部署到设备

Android studio怎么设置HTTP协议代理

android studio 运行不了

Android Studio - 提供的 javaHome 不是有效文件夹

什么是真正的 Android Studio Gradle 版本?

Android studio版本对用的gradle版本和插件版本(注意事项)