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

Xamarin Forms Android项目Firestore报Bad gRPC response错误怎么解决?

解决方案

针对Xamarin Forms Android项目中Firestore抛出的Grpc.Core.RpcException(协议降级到HTTP/1.1)问题,以下是几个可行的修复方案:

  • 强制gRPC使用HTTP/1.1
    异常提示协议降级,说明Android环境下HTTP/2可能存在兼容性问题。初始化FirestoreDb时指定通道选项强制使用HTTP/1.1:

    var channelOptions = new Grpc.Core.ChannelOption[]
    {
        new Grpc.Core.ChannelOption(Grpc.Core.ChannelOptions.HttpProtocolVersion, Grpc.Core.HttpProtocolVersion.Http11)
    };
    
    var firestoreSettings = new FirestoreSettings
    {
        ChannelOptions = channelOptions
    };
    
    // 替换为你的项目ID和凭证
    FirestoreDb db = FirestoreDb.Create("your-project-id", GoogleCredential.FromFile("service-account.json"), firestoreSettings);
    
  • 确认网络权限配置
    检查AndroidManifest.xml中是否添加了必要的网络权限:

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
  • 更新Firebase相关NuGet包
    将Google.Cloud.Firestore、Xamarin.Firebase系列NuGet包更新到最新稳定版,旧版本可能存在Android平台的gRPC兼容性Bug。

  • 配置网络安全策略
    若测试环境中存在明文HTTP拦截问题,添加网络安全配置允许明文流量:

    1. 在Resources/xml目录下创建network_security_config.xml:
      <?xml version="1.0" encoding="utf-8"?>
      <network-security-config>
          <base-config cleartextTrafficPermitted="true">
              <trust-anchors>
                  <certificates src="system" />
              </trust-anchors>
          </base-config>
      </network-security-config>
      
    2. 在AndroidManifest.xml的<application>标签中引用该配置:
      <application android:networkSecurityConfig="@xml/network_security_config">
          <!-- 其他配置 -->
      </application>
      
  • 验证模拟器网络连接
    确保Android模拟器能正常访问外网,可尝试在模拟器浏览器中打开Firebase官网,或切换模拟器的网络模式(如从WiFi切换到蜂窝网络)测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 21:48:19