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

Xamarin.Android添加android:exported遇重复项,无法发布至Google Play

解决Xamarin.Android + OneSignal 3.2.0的android:exported发布问题

方法1:用Manifest合并规则覆盖自动生成的节点

Xamarin.Android的清单合并支持通过tools命名空间控制节点替换,无需复制完整节点:

  1. 打开Properties/AndroidManifest.xml,在根<manifest>标签里添加命名空间:
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              package="你的应用包名">
    
  2. 在<application>内添加对应<receiver>节点,用tools:node="replace"覆盖自动生成的版本:
    <!-- 替换OneSignal的GcmBroadcastReceiver -->
    <receiver
        android:name="com.onesignal.GcmBroadcastReceiver"
        android:exported="false"
        tools:node="replace" />
    
    <!-- 替换OneSignal的NotificationOpenedReceiver -->
    <receiver
        android:name="com.onesignal.NotificationOpenedReceiver"
        android:exported="false"
        tools:node="replace" />
    

编译时会用你定义的带android:exported的节点完全替换自动生成的节点,不会出现重复项。

方法2:通过MSBuild任务自动修改生成的清单

如果方法1不生效,直接在项目文件里添加编译任务,自动修正obj目录的临时清单:

  1. 右键项目 → 编辑项目文件(.csproj)
  2. 在<Project>节点内添加以下MSBuild任务:
    <Target Name="FixOneSignalExportedFlag" AfterTargets="PrepareForBuild">
      <!-- 给GcmBroadcastReceiver添加exported=false -->
      <XmlPoke XmlInputPath="$(IntermediateOutputPath)AndroidManifest.xml"
               Query="/manifest/application/receiver[@android:name='com.onesignal.GcmBroadcastReceiver']/@android:exported"
               Value="false" />
      <!-- 给NotificationOpenedReceiver添加exported=false -->
      <XmlPoke XmlInputPath="$(IntermediateOutputPath)AndroidManifest.xml"
               Query="/manifest/application/receiver[@android:name='com.onesignal.NotificationOpenedReceiver']/@android:exported"
               Value="false" />
    </Target>
    

这个任务会在编译准备阶段自动修改临时清单里的对应节点,无需手动维护自定义清单。

方法3:临时切换到Visual Studio for Mac编译

既然之前用VS Mac处理时没有重复清单的问题,临时可以用VS Mac打包发布,避开Windows版VS的清单合并逻辑差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 05:25:00