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
如果自动配置失效,可以手动在项目文件中补充参数:
- 右键Android项目→卸载项目
- 右键项目→编辑.csproj文件
- 找到包含
ProcessGoogleServicesJson的任务节点,添加ResStringsPath属性,指向你的Resources/values文件夹,示例:
<ProcessGoogleServicesJson GoogleServicesJson="google-services.json" ResStringsPath="Resources/values" GeneratedResourcesDir="$(IntermediateOutputPath)generated" ...其他已有的参数... />
- 保存文件,重新加载项目并构建
4. 确认配置的正确性
关于你疑惑的${applicationId}:这个占位符会自动替换为AndroidManifest中package属性的取值,只要你的包名和Firebase项目一致,这个配置是没问题的。如果担心替换失败,可以直接替换成实际的包名(比如com.yourcompany.servicetoolstandard)再测试。
5. 清理缓存并重建项目
缓存文件损坏也可能导致这类奇怪的构建错误:
- 右键Android项目→清理
- 右键解决方案→清理解决方案
- 手动删除Android项目下的
bin和obj文件夹 - 重新构建整个解决方案
内容的提问来源于stack exchange,提问作者SirArt
相关产品推荐
相关产品推荐

