【问题标题】:Does java 11 support android?java 11 支持安卓吗?
【发布时间】:2019-04-26 14:55:54
【问题描述】:

我是安卓开发新手。我已经在我的电脑上安装了 eclipse、java 11 和 android sdk 工具。但是当我尝试构建一个项目时,它会说升级工具。但是我已经安装了最新的sdk。

当我在互联网上阅读时,我发现 android 并不完全支持 java SE,它主要支持 java SE 6 和 7。- 但这是一篇旧文章

我发现android不完全支持java 11。

我的问题是,完全支持android的JDK版本是什么,我的电脑必须安装2个版本的JDK吗?

【问题讨论】:

  • java 11 支持安卓吗? 哈哈。 没有。甲骨文不是谷歌。
  • " ...它说升级工具。" - 它确切地说了什么。确切的信息是什么? '因为我怀疑它可能告诉您更新 构建工具 而不是 Java JDK;见developer.android.com/studio/releases/build-tools
  • 还有,原标题“Do Java 11 support Android?”,Java 11不一定support Android,但可能 if Android support Java 11。所以我想知道这是否是另一个 X - Y 问题。
  • Oracle Java 和 Openjdk 从未支持 Android。 Android 已支持旧版本的 Java

标签: java android sdk java-11


【解决方案1】:

正如官方文档所说:

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

所以JDK 7是完全支持的,如果你想使用JDK 8的一些特性,你应该做相应的设置。

这里是the ref link for using Java 8

而android studio不支持8以上的java版本。

【讨论】:

  • 所以我应该在我的电脑中使用 2 个版本的 jdks。有可能吗?
  • 是的,这是可能的。但尚不清楚是否有必要。
【解决方案2】:

使用 Android Studio 北极狐 | 2020.3.1 终于可以在项目中使用 Java 11,这里有更多信息: https://developer.android.com/studio/releases/gradle-plugin?utm_source=android-studio-2020-3-1&utm_medium=studio-assistant-stable#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"
    }
}

【讨论】:

    【解决方案3】:

    可能是这2篇文章对这种情况有更多的了解:

    Jake Wharton - Android's Java 9, 10, 11, and 12 Support

    Jake Wharton - Android's Java 8 Support

    Android 也支持 java 9-12 的一些功能 如果您设置了适当的 compileOptions,例如

    compileOptions {
        targetCompatibility JavaVersion.VERSION_12
        sourceCompatibility JavaVersion.VERSION_12
    }
    

    附:对于 java 12,您需要设置“可能是最新”版本的 Gradle 插件。

    【讨论】:

    【解决方案4】:

    你有向后的适合方向。 Android 支持某些版本的 Java,而不是相反。

    话虽如此,Oracle Java 和 Android Java 并不是一回事——事实上,它们甚至不使用相同的虚拟机。它们是完全分开开发的。

    正如其他人所指出的,最新版本的 Android 最多支持 Java 7 和 Java 8 功能的子集。旧版本的 Android 可能支持的更少。

    【讨论】:

      【解决方案5】:

      截至 2020 年 10 月,许多缺失的 API 和较新版本的 Java 现在都通过 Open JDK 得到支持。我找到了一些有用的链接:Support for newer Java language APIs(官方 Youtube 视频)和Java 8+ APIs available through desugaring。我希望这可以帮助那些在 Java 版本兼容性方面苦苦挣扎的人

      【讨论】:

        猜你喜欢
        • 2012-06-18
        • 2022-11-18
        • 1970-01-01
        • 2014-05-30
        • 1970-01-01
        • 1970-01-01
        • 2013-03-25
        • 1970-01-01
        相关资源
        最近更新 更多