Flutter应用运行报错:AndroidManifest.xml路径检测异常
解决Flutter v2 Embedding项目报错找不到android根目录AndroidManifest.xml的问题
以下是针对你遇到的问题的具体排查和解决步骤:
检查Android根目录的settings.gradle配置
确认android/settings.gradle的内容正确指向app模块,v2 Embedding项目的标准配置如下:include ':app' def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() def plugins = new Properties() def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') if (pluginsFile.exists()) { pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } } plugins.each { name, path -> def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() include ":$name" project(":$name").projectDir = pluginDirectory }如果文件里有多余的模块引用或错误路径,直接删除并替换为上述内容。
验证local.properties的Flutter SDK路径
打开android/local.properties,确保flutter.sdk指向正确的Flutter安装目录,示例:flutter.sdk=C:\\flutter flutter.buildMode=debug flutter.versionName=1.0.0 flutter.versionCode=1路径错误会导致Flutter工具无法正确识别项目结构,引发路径查找错误。
确认app模块的AndroidManifest.xml配置
打开android/app/src/main/AndroidManifest.xml,重点检查两个地方:- application标签内是否有指定v2 embedding的meta-data:
<meta-data android:name="flutterEmbedding" android:value="2" /> - application的name是否为
io.flutter.app.FlutterApplication(或自定义的继承类),activity配置是否符合v2规范。
- application标签内是否有指定v2 embedding的meta-data:
清理缓存并重建项目
执行以下命令彻底清理项目缓存,避免残留配置干扰:flutter clean cd android gradlew clean cd .. flutter pub get flutter run升级Flutter SDK版本
旧版Flutter SDK可能对v2 Embedding的支持存在bug,执行flutter upgrade升级到最新稳定版,再尝试运行项目。检查android/build.gradle配置
确保android/build.gradle的buildscript依赖中包含正确的gradle插件版本,且没有旧版Embedding的残留配置,标准v2项目的build.gradle参考:buildscript { ext.kotlin_version = '1.7.10' repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.3.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } allprojects { repositories { google() mavenCentral() } } rootProject.buildDir = '../build' subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" } subprojects { project.evaluationDependsOn(':app') } tasks.register("clean", Delete) { delete rootProject.buildDir }
内容的提问来源于stack exchange,提问作者AlbertoGram
相关产品推荐
相关产品推荐

