如何将 Android 项目升级到 Java 11

azf*_*far 13 android android-studio android-jetpack android-jetpack-compose

我正在使用最新的 Android Studio Arctic Fox 2020.03.01 Canary 8 和 AGP 7,并且我想将我的项目转换为使用 Java 11。显然只是执行以下操作不起作用,如https://developer.android.com 所述/studio/preview/features#use-java-11

android {
    compileSdkVersion 30

    compileOptions {
      sourceCompatibility JavaVersion.VERSION_11
      targetCompatibility JavaVersion.VERSION_11
    }

    // For Kotlin projects
    kotlinOptions {
      jvmTarget = "11"
    }
}
Run Code Online (Sandbox Code Playgroud)

我在构建时收到以下错误:

Execution failed for task ':app:compileDebugJavaWithJavac'.
> Could not resolve all files for configuration ':app:androidJdkImage'.
   > Failed to transform core-for-system-modules.jar to match attributes {artifactType=_internal_android_jdk_image, org.gradle.libraryelements=jar, org.gradle.usage=java-runtime}.
      > Execution failed for JdkImageTransform: /Users/azfarsiddiqui/Library/Android/sdk/platforms/android-30/core-for-system-modules.jar.
         > jlink executable /Applications/Android Studio Preview.app/Contents/jre/jdk/Contents/Home/bin/jlink does not exist.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
Run Code Online (Sandbox Code Playgroud)

为简单起见,我一直在此处的 Jetpack Compose 示例项目上尝试此操作:https : //github.com/android/compose-samples/tree/main/JetNews

有什么想法吗?谢谢你们

Wil*_*ran 21

Android Studio 北极狐 2020.3.1

Preferences (Setting) -> Build, Excution, Deloyment -> Build Tools -> Gralde -> Gradle JDK -> 选择JDK 11或下载JDK

在此处输入图片说明

我假设您安装了 Java 11 或更高版本。以下步骤:

文件 -> 项目结构 -> SDK 位置 -> 将 JDK 位置更改为 Java 11 jdk 文件夹

如果您使用的是 Mac OS,请尝试在以下位置搜索该文件夹:

/Library/Java/JavaVirtualMachines/jdk-11.0.9.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  • @nymeria 在北极狐金丝雀 14 中,此设置已移至“设置 | ” 构建、执行、部署 | 构建工具| 摇篮 | Gradle JDK` https://issuetracker.google.com/issues/186135735 (17认同)
  • 最奇怪的事情发生在我身上,JDK 位置没有作为 SDK 位置部分中的选项出现...我不知道这是否是最新版本的 Arctic Fox 中出现的问题。 (5认同)
  • 啊谢谢@MatthieuEsnault!如果其他人最近升级到最新版本并且收到有关 Java 11 的错误,即使一切似乎都正常,也可以将此作为评论,运行“./gradlew --stop”并重建,它将起作用。 (2认同)

ham*_*ham 20

安装 OpenJDK 11。使用brew,它看起来像这样:

brew tap AdoptOpenJDK/openjdk
brew install adoptopenjdk11
Run Code Online (Sandbox Code Playgroud)

在 Android Studio 中: File -> Project Structure -> SDK Location设置 JDK 位置

您可以使用以下命令找到 JDK 位置

/usr/libexec/java_home -v 11
Run Code Online (Sandbox Code Playgroud)

这是/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home给我的。


hb0*_*hb0 13

我安装了 openjdk11 但jlink实际上不存在。

重新安装openjdk11解决了这个问题。

  • (如果已安装) sudo apt autoremove openjdk-11-jdk-headless
  • sudo apt install openjdk-11-jdk-headless


jam*_* sa 6

如果要删除“目标 JRE 版本与项目 SDK 不匹配”警告,则需要ProjectRootManager更改$PROJECT_DIR$/.idea/misc.xml.

在此输入图像描述

<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
Run Code Online (Sandbox Code Playgroud)

<component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="11" project-jdk-type="JavaSDK" />
Run Code Online (Sandbox Code Playgroud)