Flutter android build.gradle 无法解析类 GradleException

mar*_*cks 23 android flutter

在我的 flutter 应用程序中,flutter build apk在没有警告的情况下成功,但 android.app.build.gradle 在此代码中存在错误:

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
Run Code Online (Sandbox Code Playgroud)

错误是

无法解析类 GradleException

whereis flutter返回“/home/mark/dev/flutter/bin/flutter”。

flutter doctor -v 在 /home/mark/dev/flutter` 的通道上返回 Flutter 版本 3.3.1,并且没有错误。

我的local.properties文件包含flutter.sdk=/home/mark/dev/flutter

我该如何解决这个错误?

小智 41

去掉new前面的关键字GradleException

尝试这个

throw GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
Run Code Online (Sandbox Code Playgroud)

  • 不要这样做,Groovy 在引发异常时需要 `new` 关键字。 (4认同)
  • Groovy 中的 new 关键字用于创建类的新实例。在本例中,new 关键字用于创建 GradleException 类的新实例。如果删除 new 关键字并仅使用 GradleException(“未找到 Flutter SDK。在 local.properties 文件中使用 flutter.sdk 定义位置。”),Groovy 会将其解释为对 GradleException 类上名为 GradleException 的静态方法的引用()。由于不存在这样的方法,您将收到编译错误。 (4认同)

Dar*_*ron 18

不要删除newgradle文件中的关键字

这基本上是 VSCode 中的误报。GradleException, 或关键字没有问题new。您可以通过在 Android Studio 中打开该项目来仔细检查并验证它GradleException确实存在。

如果 VSCode 认为这是一个错误让您烦恼,您可以更改GradleExceptionException.


小智 9

GradleException用。。。来代替FileNotFoundException

throw new FileNotFoundException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
Run Code Online (Sandbox Code Playgroud)

这应该可以修复 lint 错误。