Flutter应用AndroidManifest.xml文件出现10处错误,寻求排查解决方法
Flutter AndroidManifest.xml 10处错误解决指南
常见错误原因及修复步骤
变量未定义报错:代码里的
android:name="${applicationName}"是占位变量,要么在android/app/build.gradle的defaultConfig中定义,要么直接替换为默认的Flutter应用类:
替换代码:android:name="io.flutter.app.FlutterApplication"或者在
build.gradle里添加配置:manifestPlaceholders = [applicationName: "io.flutter.app.FlutterApplication"]XML格式错误:
android:usesCleartextTraffic="true"后面的空行会导致XML解析异常,直接删除空行,保持属性连续排列。样式资源缺失:
@style/LaunchTheme和@style/NormalTheme必须在android/app/src/main/res/values/styles.xml中存在,确保该文件包含以下内容:<resources> <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar"> <item name="android:windowBackground">@drawable/launch_background</item> </style> <style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar"> <item name="android:windowBackground">@drawable/launch_background</item> </style> </resources>若
launch_background缺失,可替换为纯色背景,比如@android:color/white。权限适配问题:Android 13及以上版本已废弃
READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE,替换为细分媒体权限:<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> <uses-permission android:name="android.permission.WRITE_MEDIA_IMAGES" />若targetSdkVersion低于33,可保留原有权限并添加版本限制避免高版本报错:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32"/>清理缓存同步项目:修改完成后执行以下操作消除缓存误报:
- 点击
File -> Sync Project with Gradle Files同步Gradle - 点击
Build -> Clean Project清理项目 - 点击
Build -> Rebuild Project重新构建 - 重启Android Studio
- 点击
修复后的完整AndroidManifest.xml示例
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.buis_talk"> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application android:requestLegacyExternalStorage="true" android:label="buis_talk" android:name="io.flutter.app.FlutterApplication" android:icon="@mipmap/ic_launcher"> <activity android:name=".MainActivity" android:exported="true" android:usesCleartextTraffic="true" 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" /> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <meta-data android:name="flutterEmbedding" android:value="2" /> </application> </manifest>
内容的提问来源于stack exchange,提问作者Manhr Chawla
相关产品推荐
相关产品推荐

