Expo开发构建中React Native Firebase Crashlytics日志功能失效求助
Expo + React Native Firebase Crashlytics 日志无法收集问题解决
核心问题定位
你的配置存在两个关键问题:一是firebase.json在Expo构建流程中未被正确读取,二是关闭自动收集后未手动初始化Crashlytics,导致日志无法上传。
具体解决步骤
1. 修正App.json插件配置,直接嵌入Crashlytics参数
Expo插件支持直接在配置中传入参数,替代firebase.json的方式更可靠。修改app.json的plugins字段:
"expo": { // ...其他配置 "plugins": [ "@react-native-firebase/app", "@react-native-firebase/auth", [ "@react-native-firebase/crashlytics", { "crashlytics_debug_enabled": true, "crashlytics_auto_collection_enabled": false } ], [ "expo-build-properties", { "ios": { "useFrameworks": "static" } } ] ], // ...其他配置 }
2. 手动初始化并启用Crashlytics
由于关闭了自动收集,必须在App入口手动开启日志收集功能:
import React, { useEffect } from 'react'; import crashlytics from '@react-native-firebase/crashlytics'; import { Button } from 'react-native'; export default function App() { useEffect(() => { // 开发模式下强制启用收集(可根据需求调整) if (__DEV__) { crashlytics().setCrashlyticsCollectionEnabled(true); } // 测试初始化日志 crashlytics().log('App started: Crashlytics initialized'); }, []); // 添加测试崩溃按钮,用于验证日志上传 const testCrashAndLog = () => { crashlytics().log('Triggering test crash from user action'); crashlytics().crash(); // 主动触发崩溃,触发后重启App }; return ( // ...你的App组件内容 <Button title="Test Crash Log" onPress={testCrashAndLog} /> ); }
3. 正确构建与验证
- 禁用Expo Go:自定义原生插件必须使用开发构建,执行
expo run:ios或expo run:android,不能用Expo Go预览 - 清理缓存后重构:执行
expo r -c清理缓存,再重新构建项目 - 验证上传流程:点击测试按钮触发崩溃,重启App后等待5-10分钟,前往Firebase控制台的Crashlytics页面查看日志
4. 额外检查项
- iOS端确认
GoogleService-Info.plist已正确添加到项目(Expo插件应自动处理,可在Xcode的项目文件中验证) - Android端确认
google-services.json放置在android/app目录下 - 确保Firebase项目已启用Crashlytics服务(控制台中Crashlytics页面无初始化提示)
内容的提问来源于stack exchange,提问作者Torli
相关产品推荐
相关产品推荐

