Android Studio4.2.2搭配Android12 SDK出现INSTALL_PARSE_FAILED_MANIFEST_MALFORMED报错如何解决
INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 报错解决方案
报错根因
Android 12(API 31,即S+版本)引入了强制校验规则:所有包含<intent-filter>标签的四大组件(Activity、Service、BroadcastReceiver、ContentProvider),必须显式声明android:exported属性,不允许缺省,否则安装时就会抛出对应报错。
分步解决步骤
- 优先检查自身声明的组件
打开项目主AndroidManifest.xml,逐个核对所有携带<intent-filter>的组件,为每个补充android:exported属性:- 组件需要对外暴露给其他应用调用(比如桌面启动页、接收系统广播的接收器、支持第三方跳转的页面),设置为
android:exported="true" - 组件仅应用内部使用,设置为
android:exported="false"
示例正确配置:
- 组件需要对外暴露给其他应用调用(比如桌面启动页、接收系统广播的接收器、支持第三方跳转的页面),设置为
<activity android:name="com.xx.Activity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
- 排查第三方依赖引入的未适配组件
多数修改自身Manifest后仍报错的场景,都是依赖的第三方库内部的组件未适配Android 12,没有声明android:exported属性。可通过以下方式定位修复:
- 打开项目主
AndroidManifest.xml,点击编辑器底部的「Merged Manifest」标签,查看所有依赖库合并后的完整Manifest内容 - 找到所有携带
<intent-filter>且未声明android:exported的组件,复制其完整类名 - 在项目主
AndroidManifest.xml中新增同名组件节点,补充android:exported属性,同时添加合并规则标记,示例:
<!-- 根节点先添加tools命名空间 --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="你的包名"> <!-- 覆写三方库未适配组件 --> <activity android:name="com.third.sdk.XXActivity" android:exported="false" tools:node="merge" /> </manifest>
- 确认编译配置
检查Module级build.gradle文件的targetSdkVersion和compileSdkVersion,如果两个值≥31就必须遵守上述规则,若暂时不需要适配Android 12,可将两个值降级到30临时解决问题。 - 清理缓存重新编译
修改完成后依次执行Build -> Clean Project、Build -> Rebuild Project,清除旧编译缓存后再打包安装。
内容的提问来源于stack exchange,提问作者mozushixin
相关产品推荐
相关产品推荐

