无法解析 Flutter 应用程序的 android/app/build.gradle 文件中的符号 GradleException

Posted

技术标签:

【中文标题】无法解析 Flutter 应用程序的 android/app/build.gradle 文件中的符号 GradleException【英文标题】:Cannot resolve symbol GradleException in Flutter application's android/app/build.gradle file 【发布时间】:2021-11-20 06:42:14 【问题描述】:

我有一个小的 Flutter 应用,androidStudio(Arctic Fox 2020.3.1 Patch 2)抱怨以下错误

在 android/app/build.gradle:

无法解析符号“GradleException”

flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.5.1, on macOS 11.6 20G165 darwin-x64, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[✓] Xcode - develop for ios and macOS
[✓] Chrome - develop for the web
[✓] Android Studio (version 2020.3)
[✓] IntelliJ IDEA Ultimate Edition (version 2021.2.2)
[✓] Connected device (3 available)

• No issues found!

我尝试了目前在网上找到的建议,例如定义 SDK(已经定义,更改或删除它并重新设置没有帮助)。

偶尔,我也得到了

    在 android/app/build.gradle 中:

无法解析符号“属性”

    在 android/settings.gradle 中:

无法解析符号“文件” 无法解析符号“属性”

编辑

这是 build.gradle 的内容。 它或多或少是用flutter create生成的

def localProperties = new 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.")


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 plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android 
    compileSdkVersion 30

    compileOptions 
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    

    kotlinOptions 
        jvmTarget = '1.8'
    
    
    lintOptions 
        abortOnError false
    

    sourceSets 
        main.java.srcDirs += 'src/main/kotlin'
    

    defaultConfig 
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "org.myorg.myapp"
        minSdkVersion 21
        targetSdkVersion 30
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    

    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 
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
//  implementation 'com.google.android.gms:play-services-ads:20.4.0'

【问题讨论】:

发布你的 build.gradle @JustInCoding 我把它放在问题中。 这能回答你的问题吗? what is causing "cannot resolve symbol GradleException" in a flutter project? 【参考方案1】:

你的问题可以通过导入类GradleException来解决。只需添加此代码import org.gradle.api.GradleException。如果问题仍然存在,您可能需要重新安装 Gradle。你可以这样做:-

    使缓存无效并重新启动(推荐)。

    在gradle-wrapper.properties文件中,在distribution URL中,把版本改成最新支持的版本,我用的是7.1.1

    如果问题只出在一个项目上,创建一个新的 Flutter 项目,并将你的类文件放在新项目中,因为会生成一个新的 build.gradle,它是由于 gradle 文件损坏或同步错误而发生的。

【讨论】:

无法解析符号'gradle' 已修复,立即尝试。 我在 gradle 包装器中有 7.2。使缓存无效并重新启动也不起作用。我的 Flutter 项目比较多,只有这个有这个问题,所以不是 AndroidStudio 或 Gradle 的问题。 如果问题只出在一个项目上,创建一个新的 Flutter 项目,并将你的类文件放在新项目中,因为会生成一个新的 build.gradle,这是由于损坏的 gradle 文件而发生的或错误的同步

以上是关于无法解析 Flutter 应用程序的 android/app/build.gradle 文件中的符号 GradleException的主要内容,如果未能解决你的问题,请参考以下文章

无法解析 Flutter 应用程序的 android/app/build.gradle 文件中的符号 GradleException

升级flutter后创建方法通道-无法解析方法getFlutterView()

Flutter的MainAxisAlignment用法

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

错误:无法在 Flutter 中解析包名称

Flutter 实时数据库 onValue 解析