You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

更新Android Studio至Ladybug后Flutter Android应用无法运行求助

解决方案

1. 迁移Flutter Gradle插件到声明式plugins块

AGP 8.x要求使用声明式plugins块替代旧的apply方式,按以下步骤修改配置:

修改项目级android/build.gradle

替换原有buildscript和apply代码为plugins块:

plugins {
    id "com.android.application" version "8.3.0" apply false
    id "org.jetbrains.kotlin.android" version "1.9.20" apply false // Kotlin版本需与你的Flutter版本兼容
    id "dev.flutter.flutter-gradle-plugin" version "3.16.0" apply false // 版本需匹配你的Flutter版本(Flutter 3.16+对应此版本)
}

allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

修改模块级android/app/build.gradle

替换开头的apply代码为plugins块,并确保指定自身项目的namespace:

plugins {
    id "com.android.application"
    id "kotlin-android"
    id "dev.flutter.flutter-gradle-plugin"
}

android {
    namespace "com.your.app.package" // 替换为你项目的实际包名
    compileSdk 34

    defaultConfig {
        applicationId "com.your.app.package"
        minSdk 21 // 根据项目需求调整
        targetSdk 34
        versionCode 1
        versionName "1.0"
    }
    // 其他原有配置保持不变
}

2. 解决第三方依赖包的Namespace缺失问题

你遇到的flutter_keyboard_visibility等间接依赖包未适配AGP 8.x的namespace要求,无需手动删除包,可按以下方式处理:

方案A:升级所有依赖包到最新版本

运行命令升级所有pub依赖,绝大多数主流包已适配AGP 8.x:

flutter pub upgrade

升级后重新运行项目,问题通常会解决。

方案B:自动为第三方模块添加Namespace

如果某些旧包未更新,在项目级android/build.gradle中添加脚本,自动为所有子模块(包括第三方插件)设置namespace:

subprojects {
    afterEvaluate { project ->
        if (project.hasProperty('android')) {
            android {
                def manifestPath = "${project.projectDir}/src/main/AndroidManifest.xml"
                def manifestFile = file(manifestPath)
                if (manifestFile.exists()) {
                    def ns = new XmlSlurper().parse(manifestFile).@package
                    if (ns?.trim()) {
                        namespace ns
                    } else {
                        namespace "com.thirdparty.${project.name}"
                    }
                } else {
                    namespace "com.thirdparty.${project.name}"
                }
            }
        }
    }
}

该脚本会读取第三方模块的AndroidManifest.xml中的package值作为namespace,若不存在则自动生成默认值。

方案C:临时降级AGP与Gradle(不推荐)

若以上方案无法实施,可临时降级到AGP 7.4.2和Gradle 7.5(无需强制namespace),但这只是临时过渡方案,建议尽快适配新版本:

  • 修改android/build.gradle中的AGP版本为7.4.2
  • 修改gradle/wrapper/gradle-wrapper.properties中的distributionUrl为https\://services.gradle.org/distributions/gradle-7.5-all.zip

额外注意

确保你的Flutter版本为最新,运行flutter upgrade升级Flutter,保证与AGP、Gradle版本兼容。

内容的提问来源于stack exchange,提问作者Krishna prasad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 04:40:56