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

Xamarin Forms开启Sdk与用户程序集链接时Google AdMob报错

解决Xamarin Forms开启链接器后AdMob初始化报错的问题

这个问题我之前也碰到过,核心原因就是链接器误删了AdMob初始化需要的关键类——毕竟这些类是通过AndroidManifest.xml注册的,链接器没办法自动识别到它们的引用,直接给优化掉了。这里有几个靠谱的解决办法,既能保住链接器的压缩效果,又能解决报错:

方法一:添加自定义链接器配置文件(最精准)

  1. 在你的Android项目中新建一个名为Linker.xml的XML文件
  2. 右键该文件,将生成操作设置为LinkDescription
  3. 在文件中添加以下规则,告诉链接器保留AdMob的核心类:
<linker>
  <!-- 保留AdMob初始化提供者及相关核心类 -->
  <assembly fullname="Xamarin.GooglePlayServices.Ads">
    <type fullname="Com.Google.Android.Gms.Ads.MobileAdsInitProvider" preserve="all" />
    <type fullname="Com.Google.Android.Gms.Ads.*" preserve="methods" />
  </assembly>
  <!-- 保留Google服务基础类,避免依赖报错 -->
  <assembly fullname="Xamarin.GooglePlayServices.Base">
    <type fullname="Com.Google.Android.Gms.Common.*" preserve="methods" />
  </assembly>
</linker>

这种方式只保留必要的类型和方法,不会额外增加太多APK体积,是最优解。

方法二:跳过AdMob相关程序集的链接(最简单)

如果不想写配置文件,也可以直接让链接器忽略AdMob的程序集:

  1. 右键Android项目 → 属性 → Android选项 → 链接器
  2. 在跳过链接程序集列表中,添加以下两个程序集:
    • Xamarin.GooglePlayServices.Ads
    • Xamarin.GooglePlayServices.Base
      这种方法操作简单,但会保留这两个程序集中的所有代码,相比自定义配置会让APK体积稍大一点,但对于AdMob来说,这个增量非常有限。

额外注意事项

  • 确认你的AndroidManifest.xml中已经正确配置了AdMob的App ID,格式如下:
<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="你的AdMob App ID"/>
  • 既然你已经更新了所有NuGet包,记得确保Xamarin.GooglePlayServices.Ads和其他Google服务相关包的版本保持一致,避免版本兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 18:17:49