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

Posted

技术标签:

【中文标题】第一个 Flutter App 错误:无法解析符号“属性”【英文标题】:First Flutter App error: cannot resolve symbol "Properties" 【发布时间】:2019-11-18 04:13:51 【问题描述】:

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

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

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'

【问题讨论】:

您解决了这个问题吗?我刚刚升级了 Flutter,并且在我的应用程序级 build.gradle 文件中遇到了 Properties 和 GradleException 相同的问题。我正在使用 Android Studio。添加 maven 存储库并没有为我解决这个问题。 confluence.atlassian.com/doc/… 只需检查您的 JDK 安装位置,然后按照上面的链接进行操作 【参考方案1】:

首先点击文件部分然后 file

在那之后我们有项目结构部分 click on the project structure 之后转到那个项目并将项目 sdk 更改为最新(如果它为 null 或过时),因为我已将我的更新为 30

project sdk to change here 如有必要,更改 sdk 并应用更改 之后转到项目下的问题,如果它显示一些错误,只需点击修复它,你可以看到我的fix it 之后转到 app/build.gradle 然后将 GradleException 更改为 FileNOtFoundExcetion 现在你可以在保存所有错误后继续使用 vanishFileNotFoundException changes

【讨论】:

【参考方案2】:

它对我有用(android studio 版本:4.1,flutter 版本:2.5)

    打开 pubspec.yaml -> 立即运行“pub get” 转到文件 -> 使 Chache 无效/重新启动

【讨论】:

【参考方案3】:

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

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

这不是问题,您无需执行任何操作。显示这些是因为 IDE 在正常模式下没有检测到它们。只需“Open for Editing in Android Studio”(您可以在 TOP-RIGHT 上找到它)然后选择“New Window”,您会发现一切正常。

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

这个问题是由于没有指向正确的 Android API 平台

解决方案:

在 Android Studio 中 文件 > 项目结构

    现在会弹出一个窗口 在其中选择项目设置/项目 确保将 Project SDK 设置为下图中提到的最新平台

    接下来选择项目设置/模块子标签 在第 3 步中选择最新的 Android SDK

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

【讨论】:

如果有人想要这个问题的视频链接youtube.com/watch?v=NJp14BeTjAs 在 Android studio 4.1 中,我找不到项目结构设置........谁能指导我? @DharmikThakkar 您可以在文件选项卡中找到项目结构设置。 这是最好的解决方案,非常简单,谢谢! 我遵循了这个,但仍然无法正常工作。 new 这个词仍然会引起问题。即使删除它也没有帮助【参考方案6】:

更新:2020 年 10 月 15 日。

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

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

【讨论】:

这只是reaffirming a previous answer。请支持现有答案,而不是重复它们。唯一的区别是特定版本,如果行为更改与该特定版本有关,我只希望它是相关的。【参考方案7】:

对我来说,只是在 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.")

。 . . . . . . .

【讨论】:

【参考方案8】:

它对我有用:

    文件>项目结构(Command + ;)>在项目设置/项目下>将项目SDK设置为Android API 29平台 应该有一个通知,说明项目结构/问题下的依赖项列表中有一个无效项目。如果有,请转到 项目结构 > 在项目设置/模块下 > 选择 app_name_android > 依赖项选项卡 > 在模块 SDK 框中选择最新的“Android API 29 平台”。 将 android/app/build_gradle 下的 GradleException() 更新为 FileNotFoundException(),因为它在 Java 版本的 Android API 29 中不受支持 Solution found

【讨论】:

【参考方案9】:

我尝试了所有其他建议,但都没有帮助。然后我把 GradleException 前面的“new”去掉了,问题就解决了:

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

很长一段时间以来,它与“新”词配合得很好。我不知道是什么导致了这种变化。

【讨论】:

仅供参考,而不是删除新的,转到 file 然后 Invalidate Chache / Restart,这应该可以解决问题。【参考方案10】:

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

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

【讨论】:

【参考方案11】:

转到File -> Project Structure -> Modules -> Select your project -> apply your API

【讨论】:

【参考方案12】:

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

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

到:

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

【讨论】:

【参考方案13】:

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

它为我修好了,我希望你也是

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

【讨论】:

【参考方案14】:

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

【讨论】:

欢迎来到 SO!是答案吗?请编辑以清除。【参考方案15】:

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

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

<no project SDk>切换

Android api 29 platform

【讨论】:

对我来说没有变化。 我创建了另一个应用程序并替换了所有 .dart 文件和 pubspec.yaml。这是我找到的最快的方法。【参考方案16】:

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

【讨论】:

【参考方案17】:

需要将 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'
    

【讨论】:

以上是关于第一个 Flutter App 错误:无法解析符号“属性”的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Flutter 构建失败并出现错误无法解析配置“:app:debugRuntimeClasspath”的所有文件

无法解析符号“注释”[重复]

C++无法解析的外部符号

无法解析配置“:app:debugRuntimeClasspath”的所有文件。,颤动

无法解析符号路径

无法解析符号 R