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

Jetpack Compose项目引入ShakeBugs后Manifest合并出现android:exported报错如何解决

报错原因

你自己项目的Manifest中已对自有组件正确配置了android:exported属性,本次报错是引入的com.shakebugs:shake:14.4.0版本未适配Android 12+规范导致的:该版本SDK内部自带的Service组件声明携带intent filter,但没有显式指定android:exported属性,触发了Manifest合并规则校验失败。

解决方案

按优先级可选以下任意方案:

  • 方案1:升级Shake SDK版本
    14.4.0属于较早的迭代版本,官方后续发布的版本已经完成了Android 12适配,直接将依赖版本升级到适配Android 12的最新版本即可解决问题,无需修改其他配置。
  • 方案2:手动覆盖第三方SDK的Manifest配置(不想升级SDK时使用)
    如果你需要保留14.4.0版本使用,可以通过Manifest合并规则覆盖SDK自带的组件配置:
  1. 先在你的Manifest根节点添加tools命名空间:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.uticodes.compose_otp_input_field">
  1. 在<application>节点内添加Shake SDK对应Service的覆盖声明,显式指定android:exported属性:
<service
    android:name="com.shakebugs.shake.internal.service.ShakeDetectionService"
    android:exported="false"
    tools:node="replace"/>
<service
    android:name="com.shakebugs.shake.internal.service.ShakeNotificationService"
    android:exported="false"
    tools:node="replace"/>

如果后续仍提示其他组件缺少android:exported属性,按照相同格式添加对应组件的覆盖声明即可,不需要对外开放的组件统一设置android:exported="false"。

  • 方案3:临时降级compileSdk版本(仅做临时验证用,不推荐长期使用)
    本地调试时可以暂时将compileSdk修改为30,即可绕过Android 12的android:exported强制校验规则,不建议在正式版本中使用该方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:24:03