第一个Flutter应用错误:无法解析符号“属性”

时间:2019-07-08 15:44:47

标签: intellij-idea flutter

我遵循Flutter文档中的步骤,尝试在Intellij IDEA中构建我的第一个Flutter应用程序。当我尝试运行它时,我的JAVA_HOME变量出现错误。并且有关的错误无法解析build.gradle文件中的符号“属性”。我真的不知道该怎么办。

这是我在控制台窗口中显示的错误信息。

Launching lib\main.dart on Android SDK built for x86 in debug mode...
Initializing gradle...
Finished with error: ProcessException: Process 
"F:\untitled\android\gradlew.bat" exited abnormally:

ERROR: JAVA_HOME is set to an invalid directory: F:\Google download\jdk- 
10.0.1_windows-x64_bin.exe

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.
  Command: F:\untitled\android\gradlew.bat -v

实际上,我的JAVA_HOME变量没有任何问题,我将其设置为正确的目录:C:\ Program Files(x86)\ Java \ jdk1.8.0_131。

然后运行上面显示的命令“ F:\ untitled \ android \ gradlew.bat -v”,它似乎更新了gradle版本,但是错误没有解决。

这是build.gradle文件中的代码。

def localProperties = new Properties() 
//there will be a highlight on Properties indicates that 'cannot resolve symbol "Properties" '

def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

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.")
//the same as the Properties on GradleException
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0'
}

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

android {
    compileSdkVersion 28

    lintOptions {
        disable 'InvalidPackage'
    }

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.example.untitled"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.debug
        }
    }
}

flutter {
    source '../..'
}

dependencies {
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

15 个答案:

答案 0 :(得分:37)

我尝试了所有其他建议,但没有帮助。然后,我在GradleException前面删除了“新”,它解决了问题:

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

在很长一段时间内,它与“新”字词都能很好地工作。我不知道是什么原因导致了这种变化。

答案 1 :(得分:21)

此问题是由于未指向正确的Android API平台

解决方案:

在Android Studio中 文件>项目结构

  1. 现在弹出一个窗口
  2. 在其中选择项目设置/项目
  3. 确保如下图所示将Project SDK设置为最新平台

enter image description here

  1. 下一步选择项目设置/模块子标签
  2. 选择之前选择的最新的Android SDK

enter image description here

  1. 最后将 GradleException()替换为 FileNotFoundException(),如下所述

enter image description here

答案 2 :(得分:4)

我刚遇到这个问题,我的情况是由于无效的SDK配置。 我已经解决了:

  

项目结构>项目设置>模块>模块SDK

并从<no project SDk>

切换

Android api 29 platform

答案 3 :(得分:2)

对我有用:

  1. 文件>项目结构(命令+;)>在“项目设置/项目”下>将Project SDK设置为Android API 29平台
  2. 应该有一个通知,指出依赖项列表中“项目结构/问题”下的项目无效。如果存在,请转到项目结构>在项目设置/模块下>选择app_name_android>依赖项标签>在“模块SDK”框中选择最新的“ Android API 29平台”。
  3. 在Android / app / build_gradle下将GradleException()更新为FileNotFoundException(),因为Java版本的Java API不支持29 Solution found

答案 4 :(得分:1)

需要将google maven存储库包含到您的项目级别的build.gradle文件中。

buildscript {
    repositories {
        google()
        jcenter()
        maven {                                    //add this section 
            url "https://maven.google.com"           
        }
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.0'
    }
}

答案 5 :(得分:1)

对我来说,只需删除Properties和GradleException之前的new即可解决问题。

• Flutter version 1.21.0-10.0.pre.55 | Master Channel |
• Dart version 2.10.0 (build 2.10.0-11.0.dev)
• Android Studio 4.0.1

这是build.gradle中的第一行,“包含更改”

def localProperties = Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

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

。 。 。 。 。 。 。

答案 6 :(得分:0)

我在Android Studio中遇到了同样的问题。它看起来像Flutter插件中的错误,因此很有可能也是Intellij中的问题。在Android Studio中,有一个指向“在Android Studio中打开以供编辑”的链接(右上角)。单击后,我不再看到任何突出显示的问题。我会在IntelliJ中检查类似的链接。这是我了解到的Flutter问题:https://github.com/flutter/flutter/issues/37391

答案 7 :(得分:0)

是的,我遵循此https://github.com/flutter/flutter/issues/37391#issuecomment-544823712,并在android / app / build.gradle中将GraddleException更改为FileNotFoundException。 否则,请将android / build.gradle中的kotlin版本升级到1.3.50。 至少,将gradle distributionUrl升级到5.4.1版

答案 8 :(得分:0)

我有同样的问题。我收到此错误,是因为我没有先使用AS在另一个标签中(工具-> Flutter->打开Android模块..)来编辑android模块而未打开它。然后,我有一个解决方案,只需重新启动并杀死您Android Studio中的chache(文件->使Chache无效/重新启动)即可。

它对我来说固定,我也希望你

https://github.com/flutter/flutter/issues/29608#issuecomment-528243662

答案 9 :(得分:0)

在您的“ project \ android \ build.gradle”中 只需更改:

classpath 'com.google.gms:google-services:4.3.2'

至:

classpath 'com.google.gms:google-services:4.0.2'

答案 10 :(得分:0)

转到<head> <title>Passinho</title> <link rel="stylesheet" type="text/css" href="/style.css"> </head> <body> <br><br><br><h1>Passinho: 64 videos</h1><br><br><br><center> <!-- 64 --> <blockquote class="twitter-tweet"><p lang="pt" dir="ltr">ESSE VÍDEO É VICIANTE ?????? <a href="https://twitter.co/blLqQhWes6">pic.twitter.com/blLqQhWes6</a></p>&mdash; PASSINHOS E DANCINHAS?? (@ilovepassinhorj) <a href="https://twitter.com/ilovepassinhorj/status/1205874013920206850?ref_src=twsrc%5Etfw">December 14, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> <!-- 63 --> <blockquote class="twitter-tweet"><p lang="und" dir="ltr">? <a href="https://twitter.co/orvqANs3VQ">pic.twitter.com/orvqANs3VQ</a></p>&mdash; Bia Das Dancinhas (@Ofcquebradeira) <a href="https://twitter.com/Ofcquebradeira/status/1207007235563499520?ref_src=twsrc%5Etfw">December 17, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> <!-- 62 --> <br><blockquote class="twitter-tweet"><p lang="pt" dir="ltr">Mandei dancinha com o fuzil na mão, e pra poucos tá .... ??? <a href="https://twitter.co/s4gpEXlGxK">pic.twitter.com/s4gpEXlGxK</a></p>&mdash; Jacaré fantástico ? (@Jacarefantastic) <a href="https://twitter.com/Jacarefantastic/status/1204793573037789189?ref_src=twsrc%5Etfw">December 11, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> <!-- 61 --> <blockquote class="twitter-tweet"><p lang="pt" dir="ltr">Já que pedirammm ??‍♂️<br>Tivemos que quebrar ??????<a href="https://twitter.com/eilaryssamoraes?ref_src=twsrc%5Etfw">@eilaryssamoraes</a> <a href="https://twitter.co/Sp3dipMm0o">pic.twitter.com/Sp3dipMm0o</a></p>&mdash; Lc Quebradeira??? (@lucasalveslc1) <a href="https://twitter.com/lucasalveslc1/status/1201655334496067586?ref_src=twsrc%5Etfw">December 3, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> <!-- 60 --> <blockquote class="twitter-tweet"><p lang="pt" dir="ltr">Denunciaram eu posto denovo, Toma-lhe Quebradeira ??? <a href="https://twitter.co/ocdXY9f41b">pic.twitter.com/ocdXY9f41b</a></p>&mdash; Caduzinho Quebradeira? (@cadumarinss) <a href="https://twitter.com/cadumarinss/status/1197289193002717186?ref_src=twsrc%5Etfw">November 20, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

enter image description here

答案 11 :(得分:0)

根据flutter文档 https://flutter.dev/docs/development/tools/android-studio#android-ide

打开Flutter项目的根目录不会将所有Android文件公开给IDE。 Flutter应用程序包含一个名为android的子目录。如果您在Android Studio中将此子目录作为其自己的单独项目打开,则IDE将能够完全支持编辑和重构所有Android文件(例如Gradle脚本)。

答案 12 :(得分:0)

更新:2020年10月15日。

我正在Windows 10(amd64)上使用运行时版本1.8.0_242-release-1644 ...在Android Studio版本4.1(今天重新安装)中运行Flutter版本1.12.13 + hotfix9。

我通过在“属性”和“ GradleException”之前删除了“新”一词来修复了项目级别和应用程序级别的gradle构建文件,并在两个文件中均删除了Studio错误消息。

答案 13 :(得分:0)

这不是错误,不要从 GradleException 和 properties() 方法中删除新关键字,只需重新启动你的 android studio 你的问题就会解决。

答案 14 :(得分:0)

<块引用>

无法解析符号“属性”
无法解析符号 'GradleException'

甚至在打开清单文件时出现许多错误的情况下。

这不是问题,您不需要做任何事情。之所以显示这些,是因为 IDE 在正常模式下没有检测到它们。只需“在 Android Studio 中打开以进行编辑”(您可以在右上角找到它),然后选择“新窗口”,您会发现一切都很好。