React Native App 在设备的启动屏幕上崩溃

Posted

技术标签:

【中文标题】React Native App 在设备的启动屏幕上崩溃【英文标题】:React Native App crashes on Launch Screen on device 【发布时间】:2017-08-19 04:42:30 【问题描述】:

我从 React Native 开始,在 ios 模拟器中一切正常。我决定在设备上试一试。

应用程序启动,我可以玩它,我关闭/重新打开它大约 4 或 5 次,然后应用程序在启动屏幕上随机崩溃(带有“Powered By React Native”的那个)。它只是显示屏幕,然后应用程序崩溃到 iPhone 主屏幕。

知道如何进一步调试吗?

编辑:我在 AppDelegate.m 中添加了 Bugsnag,但是当应用程序崩溃时,Bugsnag 没有检测到任何内容。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

  NSURL *jsCodeLocation;

  [BugsnagReactNative start];

  // Rest of code  


【问题讨论】:

在调试模式下构建应用并使用remote js debugging查看应用崩溃时抛出的错误。 应用在 JS 加载之前就崩溃了。我尝试添加 Bugsnag 以查看发生了什么,但当应用程序崩溃时我没有收到崩溃报告。 @amaurymartiny 我也有同样的问题!你找到解决办法了吗? @Zolve 我安装了 Bugsnag 和 Fabric.io,但没有找到任何东西。我创建了一个新项目,现在一切正常。 只是想知道:您现在找到解决方案了吗? 【参考方案1】:

我今天遇到了这个问题。阅读一些 SO 帖子,看到一个人提到如果您的应用程序启动并挂在启动屏幕上,然后崩溃而没有错误,它可能与您的 npm 依赖项之一有关。

深入挖掘后,我看到 react 打包程序抛出错误

This error is caused by a @providesModule declaration with the same name across two different files.

修复

    检查/清理依赖项(检查同名声明)

    rm -rf node_modules

    rm -rf $TMPDIR/react-*

    npm i

【讨论】:

有没有人发现任何导致此错误的特定依赖项?我开始了一个在模拟器上运行良好(现在仍然如此)的项目,但是当我终于可以将它加载到设备上时,它启动正常并且我可以使用它,但是如果我将它滑关闭然后尝试在启动屏幕上挂起 10 秒左右后重新打开应用崩溃... @mharris7190,我相信这是因为应用程序在 iOS 的调试模式下加载时间过长。我有同样的问题 @amberv 我也这么认为。在 iOS 上以调试模式加载需要很长时间,这可能是应用程序在启动屏幕后关闭的原因。但是,在启动屏幕上,我无法打开调试菜单来关闭调试模式。那么,还有其他方法可以做到吗?通过卸载尝试但遇到同样的问题。【参考方案2】:

这似乎是由许多问题引起的。最近这发生在我身上,我不得不搜索一下以找出确切的原因。 我会通过分享我读过的几个地方来为你们省去麻烦 - https://github.com/facebook/react-native/issues/14500#issuecomment-348063910 - https://github.com/facebook/react-native/issues/17276#issuecomment-357538208

在我的情况下,这是一个我没有正确链接的库问题。

-https://github.com/ivpusic/react-native-image-crop-picker/issues/204

是的!我的意思是,这是我们做过或没做过的事情。多一点研究会有所帮助!!!

【讨论】:

我的朋友为了解决这个问题而毁了她一整天。但没有头绪。你拯救了她的一天!【参考方案3】:

我遇到了类似的问题。每次我运行应用程序时,我的应用程序都会在模拟器设备上崩溃,而不会在控制台中抛出任何错误。

以下是一些可行的解决方案:

解决方案1删除node_modules

rm -rf /node_modules
npm install

解决方案 2 删除 /android/app/build 目录(这个对我有用)

rm -rf /android/app/build

之后,从模拟器设备上卸载应用程序,然后再次运行您的应用程序

【讨论】:

【参考方案4】:

我在真实设备上也遇到了同样的问题,它在模拟器上运行良好。所以,我已经通过给定的解决方案解决了我的问题

解决方案:我已经从模拟器中卸载了该应用程序,然后重新安装了它。这次它向我展示了我在模拟器上犯的实际错误。

【讨论】:

【参考方案5】:

我也遇到了这个问题,但对我来说触发它的是更新 react 和 react-native。

我在更新后进行了构建,然后遇到了同样的问题。我降级回了以前版本的 react 和 react-native,但这对我不起作用。

我尝试删除节点模块并重新安装,但没有帮助。然后我注意到,当我在构建时:react-native run-ios

ios/build 中的文件没有更新

rm -rf ios/build/ 然后我 react-native run-ios 和 ios/build 文件夹填充。之后我的应用运行良好。

【讨论】:

【参考方案6】:

对我来说,lottie 包造成了问题。删除包后可以启动包。

通过检查最后安装的包来确保

【讨论】:

是因为链接还是什么? ,你也试过手动链接吗?【参考方案7】:

我终于通过在 xcode 中以发布模式运行应用程序来解决此错误

    转到产品->方案,然后单击编辑方案 从左侧菜单中选择运行 将调试更改为发布 取消勾选调试可执行文件 现在清理项目并在发布模式下运行您的应用 有时您必须在执行上述操作后删除 pod 并重新安装 在我的情况下,在 xcode 控制台中查找您的错误 VS 代码已导入一个库,我只需删除该导入即可

【讨论】:

以上是关于React Native App 在设备的启动屏幕上崩溃的主要内容,如果未能解决你的问题,请参考以下文章

React-native:iOS 应用程序在具有命名空间 SPRINGBOARD 的设备上的启动屏幕中崩溃

启动屏幕后 React Native ios 崩溃

如何禁用 Android 上的设备后退按钮(react-native)?

加载前启动画面白色闪烁(React Native Expo)

给react-native添加图标和启动屏

Expo React Native Bare 发布 APK 在启动时立即崩溃