如何将 Android 项目升级到 Java 11

问题描述 投票:0回答:9

我正在使用最新的 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"
    }
}

构建时出现以下错误:

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.

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

有什么想法吗?谢谢大家

android android-studio android-jetpack android-jetpack-compose
9个回答
108
投票

来自 Android Studio Artic Fox 2020.3.1

首选项(设置)-> 构建、执行、部署 -> 构建工具 -> Gradle -> Gradle JDK -> 选择 JDK 11 或下载 JDK

Artic Fox 2020.3.1版本之前

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

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

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

/Library/Java/JavaVirtualMachines/jdk-11.0.9.jdk/Contents/Home


20
投票

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

brew tap AdoptOpenJDK/openjdk
brew install adoptopenjdk11

在 Android Studio 中:

File -> Project Structure -> SDK Location
,设置JDK位置

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

/usr/libexec/java_home -v 11

对我来说

/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home


13
投票

我安装了openjdk11,但

jlink
实际上不存在。

重新安装

openjdk11
解决了这个问题。

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

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">

<component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="11" project-jdk-type="JavaSDK" />

2
投票

文件 -> 项目结构 -> SDK 位置 -> Gradle 设置 -> Gradle JDK


2
投票

只需下载 Android Studio Bumblebee (2021.1.1) Canary 5 https://developer.android.google.cn/studio/archive?hl=id


2
投票

确保您使用的是 Android Gradle 插件 7.0.0-alpha08Gradle 版本 6.8.3 在项目结构 Java 11 中对我来说工作正常

先更新IDE


1
投票

我想使用带有 lambda 的开关。如果我没记错的话,这样的结构出现在 java 14 中。 要更改版本,您可以按 Ctrl+Alt+Shift+S 或转到文件 -> 项目结构。然后 - SDK 位置 -> “JDK 位置已移至 Gradle 设置” -> Gradle JDK。选择或下载所需的jdk版本(例如15)。 “好的”。

然后转到模块选项卡并将“源兼容性”和“目标兼容性”更改为所需的版本。 “好的”。


0
投票

我在尝试使用与 Android Studio Flamingo Canary 捆绑的 JDK17 (graalvm 17.0.3) 不同的 JDK17 (graalvm 17.0.3) 时也遇到了此错误。 切换到捆绑版本为我解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.