Flutter项目AndroidManifest.xml出现多项属性配置报错
AndroidManifest 报错修复方案
现有配置的核心错误
flutterEmbedding元数据位置错误:该标签用于声明Flutter引擎嵌入版本,必须作为<application>标签的直接子节点,不能放在<activity>内部。位置错误会导致Manifest解析规则失效,连带触发大量属性不合法的误报。- 包名使用占位符未替换:根节点
package="com.packagename"是模板默认占位符,和项目实际包名不匹配时,系统无法找到对应路径下的MainActivity类,触发Unresolved class 'MainActivity'报错。 - 应用名资源引用错误:
android:label="@string/activity_name"引用的是Activity名称资源,应用全局名称应引用@string/app_name,资源不匹配会触发隐性编译错误。
修正后的完整配置
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="替换为项目实际的应用包名"> <uses-permission android:name="android.permission.INTERNET" /> <application android:label="@string/app_name" android:usesCleartextTraffic="true" android:icon="@mipmap/ic_launcher"> <!-- flutterEmbedding标签移至此处,作为application的直接子节点 --> <meta-data android:name="flutterEmbedding" android:value="2" /> <activity android:name=".MainActivity" android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize"> <meta-data android:name="io.flutter.embedding.android.NormalTheme" android:resource="@style/NormalTheme" /> <meta-data android:name="io.flutter.embedding.android.SplashScreenDrawable" android:resource="@drawable/launch_background" /> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest>
配置修正后仍报错的排查步骤
如果改完配置依旧出现大量Attribute xxx is not allowed here报错,属于IDE索引或文件路径错误,按以下顺序排查:
- 确认编辑的是正确路径的Manifest文件:Flutter主Manifest路径为
android/app/src/main/AndroidManifest.xml,不要修改debug、profile目录下的构建变体专用Manifest,这类文件不允许配置应用图标、启动模式这类全局属性,强行添加就会报属性不允许错误。 - 打开项目时要选择Flutter项目根目录,不要单独打开android子目录,等待IDE底部索引进度条走完再操作。
- 依次执行
flutter clean、flutter pub get命令,之后点击IDE菜单栏File -> Invalidate Caches...勾选清除缓存并重启,等待重新索引完成后报错会自动消失。 - 若仍提示MainActivity未解析,检查
android/app/src/main/kotlin(或java目录)下MainActivity的文件路径,是否和Manifest中填写的package属性完全匹配,不一致时调整路径或修改package属性保持一致即可。
内容的提问来源于stack exchange,提问作者riza
相关产品推荐
相关产品推荐

