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

Android Flutter应用Release模式真机AppCheck验证失败致Firestore读写异常

可能的问题原因及解决方案
  • 未指定Android端App Check验证提供者
    默认调用FirebaseAppCheck.instance.activate()时,Android端可能未明确指定验证提供者,导致Release模式下无法完成身份验证。需修改初始化代码,指定适配的提供者:

    await FirebaseAppCheck.instance.activate(
      androidProvider: AndroidProvider.playIntegrity, // 或AndroidProvider.safetyNet(逐步被Play Integrity替代)
    );
    

    若使用Play Integrity,需确保Google Play Console中已为应用启用Play Integrity API,且Firebase项目已关联该应用。

  • 依赖版本兼容性冲突
    你使用的firebase_app_check: ^0.1.1+5版本较旧,与firebase_core: ^2.3.0等其他Firebase依赖可能存在版本不兼容问题。建议升级firebase_app_check至最新稳定版,同时同步调整其他Firebase依赖到匹配版本,避免底层库版本冲突导致验证失败。

  • build.gradle中的resolutionStrategy干扰依赖
    你添加的GitHub issue#8501相关resolutionStrategy,可能强制修改了Firebase依赖的版本,导致App Check所需的底层库版本异常。可尝试暂时移除该策略,重新构建Release包测试;若必须保留,需调整策略确保App Check相关依赖版本正确。

  • App签名配置细节遗漏

    • 确认Firebase控制台App Check配置中,Android应用的SHA-256是从Google Play Console「应用签名」页面获取的应用签名密钥(发布到Play后,实际使用的是该密钥签名,仅添加上传密钥可能无效)。
    • 检查Firebase控制台中该Android应用的App Check对应提供者(Play Integrity/SafetyNet)是否处于「启用」状态。
  • App Check令牌获取或传递异常
    在Release模式下,可尝试强制刷新App Check令牌,验证是否能成功获取:

    final token = await FirebaseAppCheck.instance.getToken(true); // true表示强制刷新
    print('App Check Token: ${token?.token}');
    

    若令牌获取失败,重点排查提供者配置和SHA-256;若能获取令牌但Firestore仍报错,需确认Firebase依赖版本是否匹配,确保客户端能正确携带令牌发起请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:00:27