Flutter Android集成Firebase报错:Failed to turn object into JSON
你遇到的这个错误:
E/StorageHelpers(15925): Failed to turn object into JSON
E/StorageHelpers(15925): java.lang.NullPointerException: Attempt to invoke virtual method 'org.json.JSONObject com.google.firebase.auth.internal.zzm.zzbf()' on a null object reference
我之前也碰到过类似情况,结合你的依赖版本来看,这大概率是旧版本Firebase库的内部序列化bug或者缓存导致的状态异常,下面给你几个可行的解决方向:
1. 升级Firebase依赖版本
你当前使用的firebase_auth: ^0.5.3和cloud_firestore: ^0.7.0+2都是比较老旧的版本,这些版本存在已知的兼容性和内部序列化bug。建议升级到同一大版本的稳定版(确保所有Firebase相关依赖版本匹配,避免版本冲突),比如修改pubspec.yaml中的依赖:
firebase_auth: ^0.18.4+1 cloud_firestore: ^0.14.4
修改后执行flutter pub get,然后重新构建项目。
2. 清理项目缓存并重建
旧的构建缓存经常会导致这类奇怪的运行时错误,按以下步骤操作:
- 执行命令:
flutter clean - 手动删除项目根目录下的
android/build和android/app/build文件夹 - 执行
flutter pub get重新获取依赖 - 重启你的IDE,然后重新运行项目
3. 完善用户状态的空值判断
错误栈指向Auth相关的序列化,可能是你代码中直接使用了未判断是否为null的用户对象。在执行任何Firebase交互前,先检查当前用户是否存在:
final currentUser = FirebaseAuth.instance.currentUser; if (currentUser != null) { // 在这里执行Firestore读写或Auth操作 await FirebaseFirestore.instance.collection('users').doc(currentUser.uid).get(); } else { // 处理用户未登录的情况,比如跳转登录页 }
4. 验证Firebase配置文件
确保android/app/google-services.json文件配置正确,没有缺失Auth或Firestore相关的字段。可以重新从Firebase控制台下载最新的配置文件替换掉旧文件。
内容的提问来源于stack exchange,提问作者gaheinrichs

