app / Apbuild.grandle в моих приложениях Flutter - PullRequest
0 голосов
/ 25 апреля 2020

* Я начинаю разрабатывать во Flutter (IDE: Android Studio), и всякий раз, когда я хочу изменить app / 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.") 
}

Я знаю, что это не влияет на компиляцию приложения, но очень раздражает, что приложение / скобка подчеркнуты красным

1 Ответ

0 голосов
/ 26 апреля 2020

Решение состоит в том, чтобы просто удалить исключение. Однако проблема, вероятно, связана с недостаточными правами доступа к папке, в которой был установлен флаттер. Убедитесь, что у вас есть необходимые разрешения.

Наконец, вы можете переписать ваши файлы 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

Теперь в подпроекте мы можем получить доступ к этим свойствам, используя свойства проекта , Вышесказанное заменяет этот отвратительный шведский стол операторов if на что-то более похожее на град.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...