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

Flutter应用Release构建中调用signInAnonymously()触发firebase_auth/channel-error问题求助

Flutter应用Release构建中调用signInAnonymously()触发firebase_auth/channel-error问题求助

问题描述

我开发的Flutter应用在Debug构建中使用Firebase匿名登录完全正常,但切换到Release构建后,调用signInAnonymously()方法时会抛出FirebaseAuth的channel错误。

我已经添加了日志输出,确认Dart侧的方法调用确实被触发(日志能打印出>>> signInAnonymously called),但在await这个方法的时候直接抛出了异常,导致登录失败。

构建行为差异

  • Debug构建:匿名登录功能正常工作,无任何异常
  • Release构建:调用signInAnonymously()时抛出如下channel错误

错误日志

FirebaseAuthException: [firebase_auth/channel-error] "dev.flutter.pigeon.firebase_auth_platform_interface.FirebaseAuthHostApi.signInAnonymously"
I/flutter (31955): #0      FirebaseAuthHostApi.signInAnonymously (package:firebase_auth_platform_interface/src/pigeon/messages.pigeon.dart:1071)
I/flutter (31955): <asynchronous suspension>
I/flutter (31955): #1      MethodChannelFirebaseAuth.signInAnonymously (package:firebase_auth_platform_interface/src/method_channel/method_channel_firebase_auth.dart:288)
I/flutter (31955): <asynchronous suspension>
I/flutter (31955): #2      FirebaseAuth.signInAnonymously (package:firebase_auth/src/firebase_auth.dart:454)
I/flutter (31955): <asynchronous suspension>
I/flutter (31955): #3      Auth.signInAnonymously (package:fetomax_tv/core/services/authentication.dart:33)
I/flutter (31955): <asynchronous suspension>
I/flutter (31955): #4      _LoginViewState.signInAnonymously (package:fetomax_tv/ui/views/loginView.dart:152)

相关代码

pubspec.yaml(相关依赖)

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^1.0.5
  firebase_app_check: ^0.3.2+7

dev_dependencies:
  flutter_test:
    sdk: flutter
  firebase_analytics: ^11.6.0
  firebase_core: ^3.15.1
  firebase_crashlytics: any
  firebase_auth: ^5.6.2
  cloud_firestore: ^5.6.11
  firebase_messaging: any

main.dart(Firebase初始化代码)

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(
    name: "<Name Eg. Feto TV>",
    options: FirebaseOptions(
      apiKey: "<...>",
      appId: "<...>",
      messagingSenderId: "<...>",
      projectId: "<...>",
    ),
  );
  await FirebaseService().initialize();
  await FirebaseAppCheck.instance.activate(
    androidProvider: AndroidProvider.debug,
    appleProvider: AppleProvider.deviceCheck,
  );
  setupLocator();
  runApp(MyApp());
}

authentication.dart(Auth封装类)

final FirebaseAuth _firebaseAuth = FirebaseAuth.instance;

class Auth implements BaseAuth {
  Future<String> signInAnonymously() async{
    print("flutter: Auth being called");
    var result = await _firebaseAuth.signInAnonymously(); // <-- Release下在此处抛出异常
    print("flutter: Auth called");
    User? user = result.user;
    print("flutter: uid"+user!.uid);
    return user!.uid;
  }

  Future<User?> getCurrentUser() async {
    User? user = _firebaseAuth.currentUser;
    return user;
  }
}

登录页面调用代码(loginView.dart)

Future<void> signInAnonymously() async {
  print('>>> signInAnonymously called');
  try {
    await widget.auth!.signInAnonymously(); // <-- Release下此处抛出异常
    print("flutter: await SiginAnonymously");
  } catch (e, st) {
    print("flutter: Error${e.runtimeType}: $e");
    print(st);
    return;
  }
  // 其余代码省略...
}

已排查内容

  • 已经确认Release构建的build.gradle中minifyEnabled和shrinkResources都设置为false,排除了ProGuard/R8代码混淆导致的方法丢失问题
  • 通过日志验证Dart侧的方法调用链路正常触发,但在等待原生侧返回时抛出了channel错误
  • Debug构建全程无异常,仅Release构建出现此问题

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 07:28:03