警告:[options] 源值 7 已过时,将在未来版本中删除

mar*_*lph 6 android android-studio flutter

运行 flutter run 时出现 ff 错误。

warning: [options] source value 7 is obsolete and will be removed in a future release
warning: [options] target value 7 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
error: warnings found and -Werror specified

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':connectivity:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

* 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.

* Get more help at https://help.gradle.org
Run Code Online (Sandbox Code Playgroud)

这是我的颤振医生输出:

[?] Flutter (Channel stable, 1.20.4, on Microsoft Windows [Version 10.0.18362.1139], locale en-US)
    • Flutter version 1.20.4 at C:\src\flutter
    • Framework revision fba99f6cf9 (8 weeks ago), 2020-09-14 15:32:52 -0700
    • Engine revision d1bc06f032
    • Dart version 2.9.2


[?] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at C:\Users\USER01\AppData\Local\Android\sdk
    • Platform android-30, build-tools 30.0.2
    • Java binary at: C:\PROGRA~1\Java\jdk-13.0.2\bin\java
    • Java version Java(TM) SE Runtime Environment (build 13.0.2+8)
    • All Android licenses accepted.
Run Code Online (Sandbox Code Playgroud)

我似乎无法在谷歌上找到任何东西。我该如何解决这个错误?

小智 8

尝试这样做 Android Studio -> File -> Invalid cache and restart


use*_*708 8

这不是修复,而是临时解决方法。将以下内容放入您的build.gradle,allprojects{}部分下:

tasks.withType(JavaCompile) {
    options.compilerArgs << '-Xlint:-options' 
}
Run Code Online (Sandbox Code Playgroud)

如果您的 Android java 代码是未经修改的默认生成代码,则错误与您的依赖项之一有关,您将必须仔细检查pubspec.yaml并找到导致错误的库。


Sha*_*ane 6

这是关于编译器针对即将弃用的旧版本 Java(在本例中为 7)的警告。

要解决此问题,您有两个选择:

  1. 您可以将您JAVA_HOME的 Java设置为旧版本,然后运行 ​​Flutter 构建。您还需要JAVA_HOME在您构建的任何地方使用它(命令行、IDE、CI/CD 等)
  2. 或者我更喜欢的方法是告诉 Gradle 使用旧的 Java 工具链来编译 Java 源代码。

要执行选项 2,请将您的allprojects部分更新android/build.gradle为如下所示:


allprojects {
  repositories {
    google()
    mavenCentral()
  }

  tasks.withType(JavaCompile).configureEach {
    javaCompiler = javaToolchains.compilerFor {
      languageVersion = JavaLanguageVersion.of(8)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这包括更改已弃用的jcenterMaven 存储库的更新。