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

Android API29修改FirebaseReference URL报错:Client is offline

解决Firebase Realtime Database在API29环境下报"Client is offline"的问题

可能的原因及解决方案:

  • 检查Firebase SDK版本兼容性
    API29(Android 10)对部分高版本Firebase SDK的支持可能存在兼容问题,建议使用适配API29的稳定版Realtime Database SDK。比如在build.gradle(Module level)中指定兼容版本:

    implementation 'com.google.firebase:firebase-database:20.3.0'
    

    注意:版本号可根据实际兼容情况调整,优先选择官方标注支持API29的稳定版本。

  • 处理API29的明文流量限制
    Android 10默认禁止明文HTTP流量,若你的Firebase数据库URL使用HTTP协议(非HTTPS),需在AndroidManifest.xml的<application>标签中添加:

    android:usesCleartextTraffic="true"
    

    若使用HTTPS仍有问题,可创建res/xml/network_security_config.xml配置文件,允许Firebase域名的网络请求:

    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <domain-config cleartextTrafficPermitted="true">
            <domain includeSubdomains="true">your-firebase-database-domain.firebaseio.com</domain>
        </domain-config>
    </network-security-config>
    

    并在AndroidManifest.xml的<application>标签中引用该配置:

    android:networkSecurityConfig="@xml/network_security_config"
    
  • 关闭离线持久化(临时排查)
    低版本系统中,Firebase的离线持久化可能导致连接判定异常,可在初始化数据库后关闭持久化:

    val database = FirebaseDatabase.getInstance("your-db-url").reference
    database.database.setPersistenceEnabled(false) // 关闭离线持久化
    

    测试后若问题解决,再根据业务需求决定是否重新开启持久化。

  • 检查API29模拟器网络状态
    确认API29模拟器的网络连接正常:

    • 重启模拟器的网络服务(可通过模拟器右上角的网络图标切换状态)
    • 尝试切换模拟器的网络类型(如从Wi-Fi切换到LTE模拟)
    • 验证模拟器能否正常访问外部网络(比如打开浏览器测试网页)
  • 验证Firebase配置文件
    检查google-services.json文件是否正确配置:

    • 确认文件中的database_url与代码中使用的URL完全一致
    • 确认Firebase控制台已正确添加当前应用的包名和签名信息(API29环境无需单独添加应用,但需确保基础配置无误)

补充说明

你的代码语法本身没有问题(API33环境可正常运行即可验证),问题大概率出在API29的系统限制、SDK兼容或模拟器网络配置上,按上述步骤逐一排查即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:15:51