Expo EAS构建React Native应用时,忽略GoogleService-Info.plist导致TestFlight版本启动崩溃的问题求助
各位大佬好,我遇到一个特别头疼的问题想请教下:
我正在用Expo EAS给我的React Native应用做云构建,因为打算把Git仓库设为公开,所以把包含Google API密钥的GoogleService-Info.plist文件加入了.gitignore。本地模拟器运行完全正常,EAS构建也能顺利通过,但用TestFlight把安装包装到手机上后,一打开App就直接崩溃,而且一开始根本找不到有用的错误日志——连Mac上的Console.app都没输出相关信息,最后还是在iOS设置的「隐私与安全性 > 分析与改进 > 分析数据」里才挖到崩溃日志。
从日志里能看到核心崩溃信息:
"exception": { "codes": "0x0000000000000000, 0x0000000000000000", "rawCodes": [0,0], "type": "EXC_CRASH", "signal": "SIGABRT" }, "termination": { "flags": 0, "code": 6, "namespace": "SIGNAL", "indicator": "Abort trap: 6", "byProc": "StreamTrack", "byPid": 21823 }, "asi": { "libsystem_c.dylib": ["abort() called"] }
而且在lastExceptionBacktrace里能看到最后触发崩溃的是Firebase初始化相关的方法:
"lastExceptionBacktrace" : [ ..., { "imageOffset": 1543840, "symbol": "-[NSException initWithCoder:]", "symbolLocation": 0, "imageIndex": 94 }, { "imageOffset": 17032, "symbol": "+[FIRApp configure]", "symbolLocation": 84, "imageIndex": 11 }, ... ]
对应我在firebaseConfig.ts里的初始化代码:
let app = {} as FirebaseApp, auth = {} as Auth; try { // Initialize Firebase app = initializeApp(firebaseConfig); // Initialize Auth with React Native persistence auth = initializeAuth(app, { persistence: reactNativePersistence(AsyncStorage), }); } catch(e: any) { console.warn("Error initializing firebase: ", e); }
我本来以为用try-catch能捕获错误,但这个崩溃是发生在底层Swift/OC代码里,根本抓不到。查了资料说这种错误一般是GoogleService-Info.plist缺失或者Firebase配置有问题,但本地运行完全正常,所以应该就是plist文件在EAS构建时没有被正确包含进去的问题。
我试过一些解决方案,但还是没解决这个崩溃问题,有没有大佬遇到过类似情况,能给点思路吗?
内容来源于stack exchange

