Flutter项目AndroidManifest.xml报错:8个属性错误+1个未解析类错误
问题
我在Android Studio(Build #AI 231.9392.1.2311.11330709,2024年1月19日构建)里开发Flutter 3.29.0项目,给app/src/main/AndroidManifest.xml添加权限后,出现9个错误——8个属性不允许的错误,还有1个未解析类'MainActivity'的错误。这是我第一次用Flutter和Android Studio开发,附上相关代码和错误信息,求解决办法。
相关代码片段
<application android:label="thefingerofhope" android:icon="@mipmap/ic_launcher"> <!-- Main Activity --> <activity android:name=".MainActivity" android:exported="true" android:launchMode="singleTop" android:taskAffinity="" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize"> <!-- Intent filter for launching the app --> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <!-- Flutter embedding meta-data --> <meta-data android:name="flutterEmbedding" android:value="2" /> </application> <!-- Queries for processing text --> <queries> <intent> <action android:name="android.intent.action.PROCESS_TEXT"/> <data android:mimeType="text/plain"/> </intent> </queries>
错误信息
- android:icon属性不允许在此处使用
- 未解析类'MainActivity'
- android:launchMode属性不允许在此处使用
- android:taskAffinity属性不允许在此处使用
- android:theme属性不允许在此处使用
- android:configChanges属性不允许在此处使用
- android:hardwareAccelerated属性不允许在此处使用
- android:windowSoftInputMode属性不允许在此处使用
- android:mimeType属性不允许在此处使用
解决方法
这些错误大多是AndroidManifest.xml的结构或命名空间问题,按以下步骤逐一修复:
补全根标签的Android命名空间
所有android:开头的属性报错,核心原因是<manifest>根标签没声明Android命名空间。打开你的AndroidManifest.xml,确保最顶部的根标签是这样的:<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.your.package.name"> <!-- 这里放你的application、queries等内容 --> </manifest>把
com.your.package.name换成你项目的实际包名(可以在pubspec.yaml里找到name字段,或者看MainActivity文件的包名)。加上这个命名空间后,所有属性不允许的错误都会消失。修复MainActivity未解析的问题
- 先检查项目里是否存在
MainActivity.java或MainActivity.kt,路径是app/src/main/java/[你的包名]/下。如果没有,运行flutter clean然后flutter run,Flutter会自动生成这个文件。 - 如果文件存在,检查
android:name=".MainActivity"是否正确:点号开头代表相对manifest里package属性的路径。如果MainActivity在子目录(比如ui文件夹),要改成.ui.MainActivity,或者直接写完整类名com.example.thefingerofhope.MainActivity。
- 先检查项目里是否存在
确认queries标签的位置
你的<queries>标签放在</application>之后是合法的,但必须确保它在<manifest>根标签内部,不能放在manifest外面。只要补全了命名空间,这个标签里的android:mimeType错误也会跟着解决。
内容的提问来源于stack exchange,提问作者DomesticPotato
相关产品推荐
相关产品推荐

