You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Flutter Android项目使用build.gradle.kts构建失败:已指定compileSdk仍报‘compileSdkVersion is not specified’错误

Flutter Android项目使用build.gradle.kts构建失败:已指定compileSdk仍报‘compileSdkVersion is not specified’错误

我之前在升级Android Gradle Plugin(AGP)到8.x版本时,遇到过几乎一模一样的问题。结合你的配置细节和报错信息,大概率是Flutter与AGP 8.x在Kotlin DSL下的兼容性问题,或是你的Gradle脚本缺少了Flutter项目必需的关键配置导致的,下面分步骤给你分析和解决:

1. 先核查AGP与Flutter版本的兼容性

你当前使用的AGP是8.7.3,属于较新的AGP 8.x分支,但Flutter对AGP的支持是逐步跟进的:

  • Flutter 3.16及以上稳定版才开始全面适配AGP 8.x
  • 如果你的Flutter版本在3.16以下,直接用AGP 8.7.3会触发各种配置识别异常(包括你遇到的compileSdk不识别、空指针、超时)

解决建议

  • 若不想升级Flutter,将AGP版本降级到8.2.2(Flutter 3.13+就能稳定支持)
  • 优先升级Flutter到最新稳定版,确保与AGP 8.7.3的兼容性

2. 补全app模块build.gradle.kts的关键配置(最可能的根因)

你的app模块脚本简化得太彻底,缺少了Flutter项目必需的插件应用Flutter依赖引入——这会导致Flutter的Gradle插件完全不生效,Gradle无法识别这是一个Flutter关联的Android模块,进而出现配置不识别、空指针等问题。

修改后的android/app/build.gradle.kts示例:

plugins {
    id("com.android.application")
    id("kotlin-android")
    // 必须引入Flutter的Gradle插件,否则配置无法被Flutter正确解析
    id("dev.flutter.flutter-gradle-plugin")
}

android {
    namespace = "com.readlyaman.app"
    compileSdk = 34

    defaultConfig {
        applicationId = "com.readlyaman.app"
        minSdk = 21
        targetSdk = 34
        versionCode = 3
        versionName = "1.0.2"
    }

    // 可保留你原本的构建类型、签名配置等(如果有)
    buildTypes {
        release {
            isMinifyEnabled = false
            proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
        }
    }
}

dependencies {
    // 必须引入Flutter核心库依赖
    implementation(flutterLibrary())
    // 若使用Kotlin扩展,可添加:implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
}

3. 修正根目录build.gradle.kts的配置

你的根脚本过于简化,缺少了AGP、Kotlin插件的版本管理,以及Flutter插件的仓库配置,这会导致Gradle无法正确拉取所需插件,进而出现超时或配置异常。

修改后的android/build.gradle.kts(根目录)示例:

pluginManagement {
    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
        // 必须添加Flutter插件仓库,否则无法找到flutter-gradle-plugin
        maven(url = "https://storage.googleapis.com/download.flutter.io")
    }
    plugins {
        // 版本需与你的AGP、Flutter版本匹配
        id("com.android.application") version "8.7.3"
        id("org.jetbrains.kotlin.android") version "2.0.20"
        // Flutter插件版本一般与Flutter版本对应,升级Flutter后可留空让其自动管理
        id("dev.flutter.flutter-gradle-plugin") version "1.0.0"
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
        maven(url = "https://storage.googleapis.com/download.flutter.io")
    }
}

4. 彻底清理缓存并重启Android Studio

仅执行flutter clean可能不够彻底,建议按以下步骤操作:

  1. 执行flutter clean
  2. 删除项目根目录下的android/.gradle文件夹
  3. 删除用户目录下的Gradle缓存(Windows:C:\Users\你的用户名\.gradle\caches;Mac:~/.gradle/caches
  4. 打开Android Studio,执行File -> Invalidate Caches... -> Invalidate and Restart
  5. 重启后重新同步Gradle项目

5. 解决Gradle超时问题

若仍遇到TimeoutException,在android/gradle.properties中添加以下配置,给Gradle分配更多内存和超时时间:

org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.timeout=120000

按以上步骤操作后,你的项目应该能正常编译。我当时就是因为漏加了Flutter的插件配置折腾了好半天,补全后立刻就解决了问题。

内容来源于stack exchange

火山引擎 最新活动