添加Xamarin.GooglePlayServices.Ads包后Debug模式报错:指定包不存在
解决Debug模式下
com.google.android.gms.ads.purchase不存在的报错 看起来你碰到的是Xamarin绑定Google Play Services Ads时Debug构建特有的问题——Release正常说明包本身能正常工作,只是Debug配置有遗漏或者链接行为的问题。下面是几个亲测有效的解决办法:
1. 调整Debug模式的链接行为
Debug模式下Xamarin的链接器可能会过度裁剪未被直接调用的绑定类,导致生成的InAppPurchaseListenerImplementor.java找不到对应的原生类:
- 打开
AdvOSS.Droid项目属性 - 切换到Android Options -> Linker Properties
- 把Linking下拉框的默认选项
Sdk Assemblies Only改成Sdk and User Assemblies,或者临时改成None(仅Debug测试用) - 清理解决方案后重新构建Debug版本
2. 检查并调整NuGet包版本
部分版本的Xamarin.GooglePlayServices.Ads绑定存在Debug构建的兼容性bug:
- 打开NuGet包管理器,查看当前安装的包版本
- 尝试更新到最新稳定版,或者回退到一个已知稳定的旧版本(比如120.x系列)
- 更新后手动删除项目的
obj和bin文件夹,再重新构建
3. 强制链接器保留目标类
可以在Droid项目的任意.cs文件(比如MainActivity.cs)里加一行“无用代码”,强制链接器保留InAppPurchase相关类:
// 仅用于Debug模式下强制链接器保留InAppPurchaseListener类 var _ = typeof(com.google.android.gms.ads.purchase.InAppPurchaseListener);
这样链接器就不会在Debug构建时把这个类的绑定代码裁掉了
4. 对比Debug和Release的构建配置
检查两个模式的配置差异,避免Debug有特殊的裁剪/优化设置:
- 查看Android Options -> Advanced标签,确认Debug和Release的
Supported architectures一致 - 检查Debug模式是否启用了Release模式没有的代码优化选项
按照上面的步骤逐一尝试,应该能快速解决Debug模式下的报错问题。
内容的提问来源于stack exchange,提问作者M. Hamza Rajput
相关产品推荐
相关产品推荐

