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

给带intent-filter的activity添加android:exported后仍报Android 12+清单错误

Android12 android:exported编译报错解决方案
  • 核心问题原因
    你主模块中所有带intent-filter的Activity已配置android:exported属性,但项目依赖的第三方库(报错信息中提到的carouselview库)的清单文件内,存在带intent-filter但未显式声明android:exported的四大组件(Activity、Service、BroadcastReceiver、ContentProvider),清单合并时触发Android12及以上版本的规则校验失败。另外uninitialized.application.id警告是依赖库清单使用了未替换的占位符导致,也会影响清单合并结果。
  • 解决步骤
    1. 定位问题组件
      打开app模块的AndroidManifest.xml,点击编辑器底部的「Merged Manifest」标签,该视图会展示所有依赖合并后的完整清单内容,红色高亮标注的就是缺少android:exported配置的组件,记录对应组件的全类名、所属包名。
    2. 覆盖第三方组件配置
      在主模块的AndroidManifest.xml中手动声明这些问题组件,显式指定android:exported值,同时添加tools:replace="android:exported"保证你的配置会覆盖库的默认配置,示例如下:
      <activity
          android:name="com.example.carouselview.CarouselPreviewActivity"
          android:exported="false"
          tools:replace="android:exported" />
      
      不需要被外部应用启动的组件填false,需要对外暴露的组件填true即可,注意要检查所有四大组件,不要遗漏Service、BroadcastReceiver、ContentProvider类型的组件。
    3. 优化依赖适配
      优先升级carouselview等相关依赖到适配Android12的最新正式版本,官方适配后的依赖一般已经自带正确的android:exported配置,无需手动修改。如果升级后还有uninitialized.application.id警告,可以在app模块build.gradle的defaultConfig块中添加对应的manifest占位符配置即可。
    4. 验证修改
      配置完成后重新编译项目,再次查看Merged Manifest视图,确认没有红色报错、所有带intent-filter的组件都有明确的android:exported值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:24:08