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

Xamarin.Android推送通知构建报错:ProcessGoogleServicesJson缺少ResStringsPath参数

解决Xamarin.Android构建错误:ProcessGoogleServicesJson缺少ResStringsPath参数

我跟着《Push notifications to Xamarin.Android》教程实现推送功能(iOS部分已经正常运行),但构建Android项目时触发了以下错误:

The "ProcessGoogleServicesJson" task was not given a value for the required parameter "ResStringsPath". ServiceToolStandard.Android

我已经完成了这些前置操作:

  • 创建Firebase项目
  • 在Firebase控制台下载google-services.json文件、复制旧版服务器密钥
  • 在Azure创建通知中心并填入旧版服务器密钥
  • 对Xamarin Forms Android应用进行了如下配置:
    • AndroidManifest包名与Firebase项目包名完全一致
    • 安装NuGet包:Xamarin.GooglePlayServices.Base、Xamarin.Firebase.Messaging、Xamarin.Azure.NotificationHubs.Android
    • 添加google-services.json文件并设置Build Action为GoogleServiceJson
    • 在AndroidManifest中添加配置(对${applicationId}的取值存疑)
    • 创建Constants、MyFirebaseIIDService、MyFirebaseMessagingService类并修改MainActivity

附我的配置代码:

<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" /> 
<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND"> 
  <intent-filter> 
    <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
    <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
    <category android:name="${applicationId}" /> 
  </intent-filter> 
</receiver>

针对性解决思路

这个错误大多和Firebase NuGet包兼容性、项目配置缓存或者google-services.json的处理设置有关,你可以按以下步骤排查:

1. 统一Firebase相关NuGet包版本

版本不匹配是这类任务参数缺失问题的高发原因:

  • 打开Android项目的NuGet包管理器,把所有Xamarin.Firebase.*和Xamarin.GooglePlayServices.*系列的包更新到同一稳定版本,避免跨版本依赖冲突
  • 确认你的Xamarin.Android版本(项目属性→Application→Compile using Android version)和NuGet包的支持版本匹配,比如如果用的是Android 13+,尽量选择适配该版本的Firebase包

2. 验证google-services.json的配置

虽然你已经设置了Build Action,还是再仔细检查:

  • 确保google-services.json直接放在Android项目的根目录下,不要嵌套在子文件夹中
  • 右键文件→属性,确认Build Action确实是GoogleServiceJson(不是Content或其他选项),这个设置是让工具自动处理该文件并生成必要的资源文件

3. 手动在.csproj中指定ResStringsPath

如果自动配置失效,可以手动在项目文件中补充参数:

  1. 右键Android项目→卸载项目
  2. 右键项目→编辑.csproj文件
  3. 找到包含ProcessGoogleServicesJson的任务节点,添加ResStringsPath属性,指向你的Resources/values文件夹,示例:
<ProcessGoogleServicesJson
  GoogleServicesJson="google-services.json"
  ResStringsPath="Resources/values"
  GeneratedResourcesDir="$(IntermediateOutputPath)generated"
  ...其他已有的参数...
/>
  1. 保存文件,重新加载项目并构建

4. 确认配置的正确性

关于你疑惑的${applicationId}:这个占位符会自动替换为AndroidManifest中package属性的取值,只要你的包名和Firebase项目一致,这个配置是没问题的。如果担心替换失败,可以直接替换成实际的包名(比如com.yourcompany.servicetoolstandard)再测试。

5. 清理缓存并重建项目

缓存文件损坏也可能导致这类奇怪的构建错误:

  • 右键Android项目→清理
  • 右键解决方案→清理解决方案
  • 手动删除Android项目下的bin和obj文件夹
  • 重新构建整个解决方案

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:28:28