Gradle使用Java 1.8构建Android项目,即使Java Gradle工具链设置为jdk 11

x8goxv8g  于 2023-04-28  发布在  Android
关注(0)|答案(3)|浏览(210)
FAILURE: Build failed with an exception.
* Where:
Build file '/bitrise/src/app/build.gradle' line: 1
* What went wrong:
A problem occurred evaluating project ':app'.
> Failed to apply plugin 'com.android.internal.application'.
   > Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.
     You can try some of the following options:
       - changing the IDE settings.
       - changing the JAVA_HOME environment variable.
       - changing `org.gradle.java.home` in `gradle.properties`.

Gradle检测本地安装的JVM Gradle选择一个与构建要求匹配的JRE/JDK(在本例中为支持Java 14的JVM)如果没有找到匹配的JVM,它将自动从AdoptOpenJDK下载一个匹配的JDK
Android Gradle插件是否支持新的Gradle工具链?https://docs.gradle.org/current/userguide/toolchains.html
值得注意的库/插件/版本

  • 运行AGP 7.0.0-alpha 03
  • Kotlin1.4.21
  • Android Studio北极狐金丝雀3
  • jvmTarget 1.8
  • Gradle wrapper 6.8-rc-1

下面的应用程序模块gradle配置(删除了一些细节)

android {

    java {
        toolchain {
            languageVersion = JavaLanguageVersion.of(11)
        }
    }

    kotlinOptions {
        jvmTarget = Versions.jdkNumber
        useIR = true
    }

    buildToolsVersion Config.buildToolsVersion
    compileSdkVersion Config.compileSdk

    buildFeatures {
        compose true
        dataBinding true
    }

    composeOptions {
        kotlinCompilerVersion Versions.kotlin_version
        kotlinCompilerExtensionVersion Versions.compose
    }

    androidExtensions {
        experimental = true
    }
}
ttp71kqs

ttp71kqs1#

你可以看看这个。我有一个类似的问题,它为我修复了它。这是Gradle自己的“代码片段”,用于解决你所面临的问题。

import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompile

plugins {
    id "org.jetbrains.kotlin.jvm" version "1.4.20"
}

repositories {
    jcenter()
}

// tag::compiler-kotlin[]
def compiler = javaToolchains.compilerFor {
    languageVersion = JavaLanguageVersion.of(11)
}

tasks.withType(KotlinJvmCompile).configureEach {
    kotlinOptions.jdkHome = compiler.get().metadata.installationPath.asFile.absolutePath
}
// end::compiler-kotlin[]

这是在https://github.com/gradle/gradle/blob/master/subprojects/docs/src/snippets/java/toolchain-kotlin/groovy/build.gradle上找到的
我把它合并到我的项目中,网址是https://github.com/7ep/r3z/blob/51cc69bb6396c34f0507b67763487c9bc171a03e/build.gradle#L36
祝你好运!
拜伦

p1iqtdky

p1iqtdky2#

刚刚解决了这个问题,在项目根文件夹中添加了jitpack.yml文件,内容为:

jdk:
  - openjdk11
gudnpqoy

gudnpqoy3#

我也遇到了同样的问题,发现Bitrise Ubuntu Stack正在使用Java 8。为了切换到Java 11,需要一个脚本步骤。按照下面的方法来做。
在以任何方式使用Java的任何步骤之前向工作流添加脚本步骤。最简单的方法是将其作为工作流的第一个步骤。将以下命令添加到步骤的脚本内容输入:

sudo update-alternatives --set javac /usr/lib/jvm/java-11-openjdk-amd64/bin/javac
sudo update-alternatives --set java /usr/lib/jvm/java-11-openjdk-amd64/bin/java

export JAVA_HOME='/usr/lib/jvm/java-11-openjdk-amd64'
envman add --key JAVA_HOME --value '/usr/lib/jvm/java-11-openjdk-amd64'

以上信息来自Bitrise文档。如果你想阅读更多,请点击下面的链接。https://devcenter.bitrise.io/infrastructure/virtual-machines/#switching-to-java-11

相关问题