Android 12应用上架失败:android:exported属性配置问题求助
你自己的Manifest里的组件都加了android:exported但还是报错,核心原因是第三方依赖库的Manifest中存在带intent-filter但未设置exported的组件,打包时这些组件会合并到最终的Manifest里,导致商店检测不通过。
按以下步骤排查修复:
查看合并后的完整Manifest
打开Android Studio,在你的Manifest文件底部点击「Merged Manifest」标签,这里会显示最终打包用的所有Manifest内容。搜索所有包含<intent-filter>标签但没有android:exported属性的activity、service、broadcast receiver——这些就是问题根源,大概率来自你引入的第三方库(比如OneSignal、文件选择器这类依赖)。强制覆盖第三方组件的exported属性
找到上述问题组件的完整类名后,在你自己的Manifest中添加对应的组件声明,明确设置android:exported,并通过tools:node="merge"确保合并时覆盖第三方的配置。举个例子,如果发现某第三方Service未设置exported,就这么加:<service android:name="com.example.thirdparty.SomeService" android:exported="false" tools:node="merge" />注意:
exported设为true还是false,取决于这个组件是否需要接收外部应用的intent——如果是仅内部使用的组件,设为false;如果需要外部唤起(比如和系统交互的组件),设为true。全面检查所有组件类型
别只盯着activity和receiver,service、provider这类组件如果带intent-filter也必须设置exported。比如推送库的service、扫码库的receiver,很容易漏掉。验证修复结果
重新构建APK或Android App Bundle,再去Merged Manifest里确认所有带intent-filter的组件都已经设置了android:exported属性,之后再上传应用商店即可。
内容的提问来源于stack exchange,提问作者Stefano Baiardi

