升级targetSDK至31后出现Manifest合并失败错误求助
解决targetSdkVersion升级到31后的Manifest合并错误
Android 12(API 31)对应用组件的安全性做了强制要求:所有包含<intent-filter>的Activity、Service、BroadcastReceiver必须显式声明android:exported属性,取值为true或false,否则会触发Manifest合并失败。
具体修复步骤:
检查本地Manifest的组件
打开你的AndroidManifest.xml,找到所有带有<intent-filter>的组件,添加android:exported属性:- 主Activity(需要被系统Launcher唤起)设置为
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> - 仅内部使用的组件(无需外部应用调用)设置为
false。
- 主Activity(需要被系统Launcher唤起)设置为
处理第三方库的适配问题
部分老旧第三方库可能未适配API 31,缺少android:exported属性。可以在本地Manifest中覆盖对应组件的属性,示例:<service android:name="com.example.library.SomeService" android:exported="false" tools:node="merge" />tools:node="merge"用于确保合并时保留你的配置。查看详细错误日志定位问题
若仍未解决,打开Android Studio底部的Build窗口,找到Manifest Merger的详细日志,日志会明确指出哪个组件存在问题,针对性修改即可。
内容的提问来源于stack exchange,提问作者miharex
相关产品推荐
相关产品推荐

