Java 11是否支持Android?

52

我是Android开发的新手。我已经在电脑上安装了Eclipse、Java 11和Android SDK工具。但当我尝试构建项目时,它说要升级工具。但我已经安装了最新的SDK。

在网上阅读时,我发现Android不完全支持Java SE,而是主要支持Java SE 6和7,但这是一篇旧帖子。

我发现Android并不完全支持Java 11。

我的问题是,哪个JDK版本完全支持Android,我是否需要在电脑上安装2个JDK版本?


4
Java 11 支持 Android 吗?哈哈,不支持。Oracle 和 Google 是不同的公司。 - Elliott Frisch
3
“...它说要升级工具。” - 它确切地说了什么?是什么精确的信息?因为我怀疑它可能是在告诉你更新构建工具而不是Java JDK,请参见https://developer.android.com/studio/releases/build-tools。 - Stephen C
5
此外,原标题“Java 11是否支持Android?”并不需要Java 11来“支持”Android,但如果Android支持Java 11,则可能会实现。因此,我想知道这是否是另一个“X-Y问题”。 - Geno Chen
2
Oracle Java和Openjdk从未支持过Android。Android支持旧版本的Java。 - Peter Lawrey
显示剩余4条评论
5个回答

29

使用 Android Studio Arctic Fox | 2020.3.1,您终于可以在项目中使用 Java 11,以下是更多信息:https://developer.android.com/studio/past-releases/past-agp-releases/agp-7-0-0-release-notes#java-11

您现在可以在应用程序项目中编译Java 11源代码,这使您能够使用较新的语言功能,如私有接口方法、匿名类的菱形运算符和用于Lambda参数的局部变量语法。

要启用此功能,请将compileOptions设置为所需的Java版本,并将compileSdkVersion设置为30或更高版本。

// build.gradle

android {
    compileSdkVersion 30

    compileOptions {
      sourceCompatibility JavaVersion.VERSION_11
      targetCompatibility JavaVersion.VERSION_11
    }

    // For Kotlin projects
    kotlinOptions {
      jvmTarget = "11"
    }
}

22

1
请更新链接:https://jakewharton.com/androids-java-8-support/ - Minh Nghĩa

20

正式文档如下所述:

Android Studio 3.0及更高版本支持所有Java 7语言功能和一些Java 8语言功能的子集,其特性因平台版本而异。

因此JDK 7得到完全支持,如果你想使用一些JDK 8功能,则应进行适当的设置。

这里是使用Java 8的参考链接

而且android studio不支持高于8的java版本。


那我应该在我的电脑上使用两个版本的JDK吗?这是可能的吗? - Seniru Pasan
是的,这是可能的。但并不清楚是否有必要这样做。 - Stephen C

7
您的方向有误。Android支持某些版本的Java,而不是反过来。
话虽如此,Oracle Java和Android Java并不完全相同——事实上,它们甚至不使用同一个虚拟机。它们正在完全分开开发。
正如其他人所指出的,最近版本的Android支持Java 7和Java 8功能的子集。旧版本的Android可能支持的内容不如此丰富。

6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接