Android Studio运行Kotlin脚本出现Manifest合并失败报错如何解决
解决方案
报错根因
- 报错核心为Android 12(API 31)及以上版本强制要求:所有带有
<intent-filter>标签的四大组件(Activity、Service、BroadcastReceiver、ContentProvider)必须显式声明android:exported属性,Manifest合并失败是该属性缺失导致的。
分步修复方案
1. 修正主AndroidManifest.xml配置
- 打开项目路径
app/src/main/AndroidManifest.xml - 找到所有配置了
<intent-filter>的组件,逐个添加android:exported属性:- 若组件需要被外部应用(如系统桌面、其他App)调用,设置为
android:exported="true",例如App入口Activity必须设为true,示例配置:<activity android:name=".MainActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> - 若组件仅允许App内部调用,直接设置为
android:exported="false"即可。
- 若组件需要被外部应用(如系统桌面、其他App)调用,设置为
2. 排查第三方依赖引入的隐式组件
如果修改主Manifest后仍报错,是引入的第三方依赖内部组件未声明exported属性导致,按以下方式处理:
- 点击Android Studio顶部菜单栏
Build > Analyze APK,选择app/build/outputs/apk/debug/app-debug.apk打开,查看合并后的AndroidManifest.xml,定位所有未声明exported的组件完整包名和类名 - 在主Manifest文件中重载该组件的配置,显式添加exported属性,示例:
<activity android:name="com.xxx.xxx.ThirdPartyActivity" android:exported="false" tools:node="merge" /> - 确保Manifest根标签已经添加tools命名空间:
xmlns:tools="http://schemas.android.com/tools"
3. 单独运行Kotlin脚本的特殊配置
如果需要执行非Android逻辑的Kotlin代码,不需要走Android编译流程,按以下操作即可绕过Manifest校验:
- 右键项目根目录,选择
New > Module > Java or Kotlin Library,创建纯Kotlin模块 - 将需要单独运行的Kotlin代码放到该模块下,右键代码文件点击
Run即可正常执行。
补充说明:如果选择降低SDK版本的方案,需要同时将模块级build.gradle中的
compileSdk、targetSdk都修改为30或更低版本,仅修改单一项无法绕过Android 12的属性校验规则。
完成所有配置后,点击Android Studio右上角的 Sync Project with Gradle Files 同步项目,再清理重建即可解决报错。
内容的提问来源于stack exchange,提问作者Petr Šula
相关产品推荐
相关产品推荐

