You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Flutter安卓模拟器无法连接Firebase问题求助

解决Android Studio更新后Flutter Firebase安卓端连接失败问题

嘿,我帮你梳理下这个问题的排查方向——从你描述的情况来看,iOS端正常但安卓端出现no auth token和网络不可用的错误,还伴随插件找不到的警告,大概率是Android Studio更新后Gradle配置、Firebase初始化或者模拟器网络的问题,一步步来:

1. 先解决Plugin project :firebase_core_web not found警告

这个警告是Gradle配置同步出了问题,更新AS后经常会遇到:

  • 最简单的方法是用Firebase CLI重新配置项目:在终端运行flutterfire configure,选择你的Firebase项目,它会自动帮你修复所有Gradle相关的配置文件,包括settings.gradle。
  • 如果手动修复的话,打开android/settings.gradle,确保开头的pluginManagement和plugins配置符合最新Flutter Firebase项目模板规范,并且include ":app"没有遗漏。

2. 排查Firebase认证令牌缺失问题(no auth token for request

这个是核心错误,说明安卓端没有正确获取到Firebase的认证凭据:

  • 检查google-services.json配置:确保这个文件放在android/app目录下,里面的package_name和你安卓项目的applicationId完全一致(在android/app/build.gradledefaultConfig里查看),同时project_idapi_key等信息要和Firebase控制台里的项目匹配。
  • 确保Firebase Core初始化正确:在main函数里一定要先初始化Firebase,代码示例如下:
    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      // 多环境配置记得传入对应options
      await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
      runApp(const MyApp());
    }
    
  • 测试匿名登录:如果你的Storage规则需要认证,先尝试匿名登录再上传文件,验证是否解决令牌问题:
    // 上传操作前添加这段代码
    await FirebaseAuth.instance.signInAnonymously();
    

3. 解决模拟器网络不可用问题

错误里的network unavailable说明模拟器可能连不上网:

  • 重启模拟器,进入模拟器设置(右上角三个点→Settings→Proxy),把代理设置为None,再重启模拟器。
  • 检查电脑防火墙是否阻止了模拟器的网络请求,暂时关闭防火墙测试一下。
  • 换一个安卓版本的模拟器试试,比如API 33的模拟器,旧版本模拟器的网络适配偶尔会有问题。

4. 更新Firebase插件和Gradle版本

Android Studio更新后,旧版本的Firebase插件可能和新的Gradle版本不兼容:

  • pubspec.yaml里把所有firebase相关的依赖更新到最新版本,比如:
    firebase_core: ^2.15.0
    firebase_storage: ^11.2.0
    
    然后运行flutter pub get,再执行flutter clean清理缓存,重新构建项目。
  • 检查android/build.gradle里的classpath版本,确保和Gradle wrapper版本匹配,示例如下:
    dependencies {
        classpath 'com.android.tools.build:gradle:7.4.2'
        classpath 'com.google.gms:google-services:4.4.0'
    }
    
    对应的gradle/wrapper/gradle-wrapper.properties里的distributionUrl要改成:
    distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
    

5. 临时测试Storage规则

如果以上步骤都没解决,可以暂时修改Firebase Storage的规则,允许未认证访问(仅测试用,生产环境一定要改回来):

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth == null;
    }
  }
}

如果这样能正常上传,说明问题出在认证流程上,再回头排查初始化和登录的代码。

按照这个顺序排查,应该能找到问题所在~

内容的提问来源于stack exchange,提问作者森口万太郎

火山引擎 最新活动