Android Kotlin新手遇Manifest合并错误:需显式设置android:exported
解决Android 12+ Manifest合并错误:缺少android:exported属性
你的错误核心是Android 12(API 31)及以上版本的强制规则:所有包含<intent-filter>的组件(比如Activity)必须显式声明android:exported属性,取值只能是true或false。
具体修复步骤:
- 打开项目中的
AndroidManifest.xml文件 - 定位到以下两个Activity的声明:
<activity#com.example.chattery.ui.activities.MainActivity><activity#com.example.chattery.ui.activities.ProfileActivity>
- 为它们添加
android:exported属性:- 对于MainActivity(带有LAUNCHER类型的intent filter,是应用启动入口),必须设为
android:exported="true",因为它需要被系统桌面启动器调用 - 对于ProfileActivity,如果仅用于应用内部页面跳转、不需要被外部应用启动,设为
android:exported="false";如果需要外部应用能唤起它,才设为true
- 对于MainActivity(带有LAUNCHER类型的intent filter,是应用启动入口),必须设为
修改后的代码示例:
MainActivity声明:
<activity android:name="com.example.chattery.ui.activities.MainActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
ProfileActivity声明:
<activity android:name="com.example.chattery.ui.activities.ProfileActivity" android:exported="false"> <!-- 如果你给这个Activity设置了自定义intent filter,保留即可 --> <intent-filter> <!-- 你的自定义action、category等 --> </intent-filter> </activity>
修改完成后,点击Android Studio右上角的「Sync Project with Gradle Files」按钮同步项目,再重新编译即可解决该错误。
内容的提问来源于stack exchange,提问作者flanker05
相关产品推荐
相关产品推荐

