You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级SDK至31遇android:exported报错,添加属性仍未解决

问题分析与解决方案

Android 12(API 31)及以上硬性要求:所有带有<intent-filter>的组件(Activity、Service、BroadcastReceiver、ContentProvider)必须显式声明android:exported属性,不管是你自己编写的还是第三方依赖库自动注入的组件,都得满足这个要求。

你贴出的代码里,SplashScreen和FcmServices都已正确设置android:exported,但报错说明还有其他带<intent-filter>的组件遗漏了该属性,大概率是以下两种情况:

1. 第三方依赖库注入的组件未处理

很多SDK(比如Firebase、推送、统计工具)会自动向Manifest中添加带intent-filter的Service或BroadcastReceiver,这些组件默认可能没设置android:exported。

解决方法:

  • 打开Android Studio的Manifest编辑器,切换到底部的Merged Manifest标签,查看最终合并后的完整Manifest。
  • 找到所有带有<intent-filter>但无android:exported属性的组件,在你自己的Manifest中覆盖声明并添加该属性。

举个常见例子:如果发现Firebase的FirebaseInstanceIdReceiver缺失android:exported,可在Manifest中添加:

<receiver
    android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
    </intent-filter>
</receiver>

2. 自有组件未完全检查

你仅贴出部分Manifest代码,可能还有其他自定义的Activity、Service或Receiver带有<intent-filter>但未设置android:exported。

解决方法:

  • 检查所有自定义组件,只要包含<intent-filter>,就必须显式添加android:exported:
    • 像Launcher这类需要被系统调用的组件,设为android:exported="true"
    • 仅内部使用的组件(比如后台服务、内部接收器),设为android:exported="false"

内容的提问来源于stack exchange,提问作者itsmebil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 09:54:19