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

React Native Android调用Firebase Cloud Function时持续报UNAVAILABLE错误求助

React Native Android 调用Firebase Cloud Function 报UNAVAILABLE错误排查方案

以下是针对Android端独有的问题排查步骤,结合你的iOS正常的情况,聚焦Android项目配置:

  • 检查网络权限与明文流量配置

    1. 确认AndroidManifest.xml中已添加网络权限:
      <uses-permission android:name="android.permission.INTERNET" />
      
    2. 若使用HTTP协议触发函数(非Callable类型),Android 9及以上默认禁止明文流量,需配置网络安全规则:
      • 在res/xml目录下创建network_security_config.xml,添加允许访问的函数域名:
        <?xml version="1.0" encoding="utf-8"?>
        <network-security-config>
            <domain-config cleartextTrafficPermitted="true">
                <domain includeSubdomains="true">your-function-domain.firebaseapp.com</domain>
            </domain-config>
        </network-security-config>
        
      • 在AndroidManifest.xml的application标签中引用该配置:
        android:networkSecurityConfig="@xml/network_security_config"
        
    3. 若使用Callable函数,确保firebasefunctions.googleapis.com未被拦截,可直接在设备浏览器访问该域名测试连通性。
  • 验证Firebase配置与函数端点

    1. 核对android/app/google-services.json中的project_id、api_key、project_number与Firebase控制台完全一致,重点确认函数部署的region是否和调用代码中指定的匹配(比如代码中用functions().useRegion('europe-west1'),部署时也要对应)。
    2. 检查Callable函数名称拼写是否完全匹配,登录Firebase控制台确认函数处于active状态,无部署失败记录。
  • 排查依赖版本兼容性

    1. 确保react-native-firebase/functions与Firebase Android SDK版本兼容:在android/build.gradle中查看firebase-bom的版本号,需与RN Firebase官方文档要求的版本一致,避免跨版本冲突。
    2. 确认React Native版本与react-native-firebase的版本适配,比如RN 0.7x可能需要对应特定版本的RN Firebase包。
  • 调整ProGuard/R8混淆规则
    若开启了代码混淆,需在android/app/proguard-rules.pro中添加Firebase Functions的保留规则,避免核心类被混淆:

    -keep class com.google.firebase.functions.** { *; }
    -keep class com.google.firebase.inappmessaging.** { *; }
    -keepattributes Signature
    
  • 测试设备网络环境

    1. 排除代理、VPN或企业防火墙的影响:关闭设备上的代理设置,切换到移动网络测试。
    2. 在模拟器或设备上用curl命令测试函数端点连通性,比如:
      curl https://your-region-your-project-id.cloudfunctions.net/your-function-name
      
  • 启用调试日志定位细节
    在Android项目中添加日志输出,捕获更详细的错误信息:

    import android.util.Log;
    import com.google.firebase.functions.FirebaseFunctions;
    import com.google.firebase.functions.HttpsCallableResult;
    
    // 在调用函数的位置添加
    FirebaseFunctions.getInstance()
        .getHttpsCallable("your-function-name")
        .call()
        .addOnFailureListener(e -> {
            Log.e("FirebaseFuncError", "调用失败: " + e.getMessage(), e);
        });
    

    通过Android Studio的Logcat查看完整错误栈,确认是DNS解析失败、连接超时还是权限问题。

  • 检查App签名配置
    确保Firebase控制台的项目设置中已添加当前测试/发布版本的App签名SHA-1值:

    • Debug版本可通过./gradlew signingReport获取SHA-1
    • Release版本需使用正式签名文件生成SHA-1并添加到Firebase

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 15:53:15