适配Android S+时已设android:exported仍遇安装解析错误求助
解决 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 安装错误
错误根源
错误并非来自你设置了android:exported="true"的MainActivity,而是flutter_local_notifications插件中的ScheduledNotificationBootReceiver广播接收器未满足Android 12+的要求:所有带有Intent Filter的组件必须显式声明android:exported属性。该插件自带的接收器未配置此属性,导致安装解析失败。
修复步骤
在你的AndroidManifest.xml的<application>标签内,添加以下代码显式配置该接收器:
<application ...> <!-- 已有代码保持不变 --> <!-- 修复插件接收器的exported属性缺失问题 --> <receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver" android:exported="true" tools:replace="android:exported"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/> </intent-filter> </receiver> </application>
android:exported="true":由于该接收器需要接收系统开机广播,因此设置为true;若你的应用无需开机触发通知,可设为false并移除对应的<intent-filter>。tools:replace="android:exported":确保覆盖插件自带的接收器配置,避免Manifest合并冲突。
查看所有带Intent Filter的组件
要排查类似组件配置问题,可通过以下方式查看完整的Manifest(包含所有插件添加的组件):
- Android Studio Merged视图:打开你的
AndroidManifest.xml,点击底部的「Merged Manifest」标签,即可看到合并后的所有组件及其配置。 - 构建后文件:前往
build/app/intermediates/merged_manifests/[构建变体]/目录(构建变体如debug),打开AndroidManifest.xml查看完整内容。 - aapt命令:运行以下命令从APK提取Manifest(需配置Android SDK的build-tools环境变量):
aapt dump xmltree 你的APK路径 AndroidManifest.xml
内容的提问来源于stack exchange,提问作者whatwhatwhat
相关产品推荐
相关产品推荐

