ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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

在我找到的所有项目首选项中,我都将 1.7 设置为目标。此外,在 1.7 SDK 下的项目 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 支持。请检查我编辑的答案。

C
Community

在构建工具 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 或更高版本一起使用。
S
Simon

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

https://i.stack.imgur.com/iIi7q.jpg


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

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

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

https://i.stack.imgur.com/8Td2J.png


E
Elye

最新的 Android Studio 1.4。

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

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


此设置令人困惑,因为它影响所有项目,即使它被命名为“项目结构”。
k
kunal

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

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


C
Community

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

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


这里有一个类似的问题,其中包含有关如何克服该问题的链接:stackoverflow.com/questions/14487682/…
D
DenisKolodin

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

compileSdkVersion 23

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


K
Klez

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

您还可以进入模块设置并将源/目标兼容性设置为 1.7。

Module settings window

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

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}