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 语句大杂烩。
* 我开始在 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 语句大杂烩。