Xamarin集成Google OAuth报Invalid file name错误如何解决
Xamarin.Android Google OAuth集成:缺失GoogleServicesJson生成选项+文件名非法报错解决方案
问题现象
- 集成Google OAuth时已将
google-services.json放置在Android项目根目录 - 选中文件查看属性,生成操作(Build Action)下拉列表无
GoogleServicesJson选项 - 执行重新生成操作时抛出错误:
Invalid file name: It must contain only [^a-zA-Z0-9_.]+,报错指向项目内的google-services.json文件
解决步骤
1. 先修复全路径非法字符问题
这个报错来自Xamarin Google Play Services包的构建校验逻辑,会检查google-services.json的完整绝对路径,要求路径所有字符只能是大小写英文字母、数字、下划线、英文点,出现其他字符就会触发报错,常见触发场景:
- Windows系统用户名为中文,导致
C:\Users\中文用户名\路径段包含非合规字符 - 解决方案存放的文件夹包含空格、中文、短横线
-、&、括号等特殊符号 google-services.json文件名本身被添加了空格、特殊后缀
修复方式:将整个解决方案迁移到纯英文、无空格无特殊符号的路径下,例如C:\Dev\YourAppName\,确认从盘符到文件的所有路径段都符合字符要求后,再执行后续操作。
2. 安装依赖NuGet包,注入GoogleServicesJson构建任务
GoogleServicesJson生成选项不是Visual Studio内置选项,由Xamarin Google Play Services相关NuGet包的MSBuild任务提供,选项缺失说明对应依赖未安装:
- 右键Android项目,选择「管理NuGet程序包」
- 搜索安装稳定版
Xamarin.GooglePlayServices.Auth(做Google OAuth会直接用到这个包,其依赖的Xamarin.GooglePlayServices.Base会自动安装,包含所需的构建任务) - 安装完成后完全关闭Visual Studio,重新打开解决方案,仅重新生成不会加载刚安装的MSBuild任务,必须重启IDE。
3. 手动编辑项目文件补配置(重启后选项仍不显示时用)
如果重启IDE后属性面板依然找不到GoogleServicesJson选项,直接手动修改项目文件即可:
- 右键Android项目,选择「卸载项目」,再次右键选择「编辑[你的项目名].Android.csproj」
- 在文件中找到原有引用
google-services.json的ItemGroup节点,替换为如下配置:
<ItemGroup> <GoogleServicesJson Include="google-services.json" /> </ItemGroup>
- 保存csproj文件,右键选择「重新加载项目」即可。
4. 验证修复结果
- 执行清理解决方案、重新生成操作,确认文件名非法报错消失
- 生成成功后打开项目
obj/[当前构建配置]/android/values路径,检查是否存在自动生成的google services相关资源文件,存在即说明配置生效。
内容的提问来源于stack exchange,提问作者iamdeed
相关产品推荐
相关产品推荐

