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

生成签名APK/Bundle时Gradle Manifest合并错误求助

解决OneSignal接收器未声明android:exported及图标警告问题

一、处理OneSignal接收器的android:exported属性错误

这些接收器是OneSignal SDK通过Manifest合并机制自动添加的,本地清单中不会直接显示。需显式声明并指定android:exported属性以适配Android 12+的强制要求:

  1. 在你的AndroidManifest.xml中添加以下接收器声明,根据组件用途设置exported值:
<receiver
    android:name="com.onesignal.GcmBroadcastReceiver"
    android:exported="true"
    tools:node="merge">
    <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
    </intent-filter>
</receiver>

<receiver
    android:name="com.onesignal.BootUpReceiver"
    android:exported="false"
    tools:node="merge">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
    </intent-filter>
</receiver>

<receiver
    android:name="com.onesignal.UpgradeReceiver"
    android:exported="false"
    tools:node="merge">
    <intent-filter>
        <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
    </intent-filter>
</receiver>
  • GcmBroadcastReceiver需要接收外部推送事件,设为true;
  • BootUpReceiver和UpgradeReceiver仅处理应用内部广播,设为false;
  • tools:node="merge"确保与SDK自带的Manifest配置合并时,保留你指定的属性。
  1. (推荐)升级OneSignal SDK到最新稳定版,新版本已原生适配Android 12+的exported要求,可省去手动声明的步骤。更新build.gradle中的依赖:
dependencies {
    implementation 'com.onesignal:OneSignal:[最新稳定版本号]'
}

二、处理application@android:icon替换警告

该警告源于多模块/SDK的图标声明冲突,解决方法:
在AndroidManifest.xml的<application>标签中显式指定图标,并添加tools:replace强制覆盖其他来源的声明:

<application
    android:icon="@mipmap/ic_launcher" <!-- 替换为你的实际图标资源路径 -->
    tools:replace="android:icon"
    ...>
    <!-- 其他应用配置内容 -->
</application>

最后验证

执行以下命令清理项目后重新构建发布版:

./gradlew clean
./gradlew assembleRelease # 若生成App Bundle则执行 bundleRelease

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 19:51:01