app/Apbuild.我的 Flutter 应用程序中的大错误

app/Apbuild.grandle error in my Flutter apps

* 我开始在 Flutter (IDE: Android Studio) 中开发,每当我想修改应用程序时 / build.gradle 在

中犯错
def localProperties = new  Properties()

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.") 
}

我知道这不影响编译应用程序,但很烦人的是 app / bradle 有红色下划线

解决方法很简单,就是去掉异常。不过这个问题可能是因为安装flutter的文件夹权限不够。确保您拥有正确的权限。

最后,您可以重写 build.gradle 文件,将其中的一部分替换为以下内容,使其没有异常:

android/build.gradle

subprojects {
    buildDir = "${rootProject.buildDir}/${project.name}"

    beforeEvaluate {
        def localProps = new Properties().tap { prop ->
            File localPropsFile = getRootProject().file('local.properties')
            if (localPropsFile.exists()) {
                localPropsFile.withReader("utf-8") {
                    prop.load(it)
                }
            }
        }

        localProps.stringPropertyNames().each { key ->
            ext[key] = localProps.getProperty(key)
        }
    }
}

本质上,它所做的是读取 local.properties 文件(如果存在)并在子项目的命名空间中创建从中读取的属性。我们基本上是在模拟 gradle 对 gradle.properties 文件所做的操作。

android/app/build.gradle

ext {
    flutterRoot = properties.'flutter.sdk'
    flutterVersionCode = properties.'flutter.versionCode' ?: '1'
    flutterVersionName = properties.'flutter.versionName' ?: '1.0'
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

... // everything else is pretty much the same from here

现在在子项目中,我们可以使用项目的属性访问这些属性。上面的代码用更像 gradle 的东西替换了可怕的 if 语句大杂烩。