React Native应用在设备启动屏幕时崩溃

18

我刚开始学习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  

}

以调试模式构建应用程序,并使用远程JS调试来查看应用程序崩溃时抛出的错误。 - Hariks
1
应用程序在JS加载之前就崩溃了。我尝试添加Bugsnag来查看发生了什么,但当应用程序崩溃时,我没有收到崩溃报告。 - jeanpaul62
@amaurymartiny 我也遇到了同样的问题!你找到解决方法了吗? - Zolve
@Zolve 我安装了Bugsnag和Fabric.io,但是没有发现任何问题。我创建了一个新项目,现在一切都正常工作。 - jeanpaul62
你好,只是想问一下:你现在找到任何解决方案了吗? - MrTopf
@MrTopf 是的和不是的,我创建了一个新的XCode项目,从头开始npm安装了所有东西,一切都正常工作。但它似乎很脆弱。 - jeanpaul62
8个回答

8
我今天遇到了这个问题。我阅读了一些SO帖子,看到一个人提到,如果你的应用程序在启动画面上卡住,然后没有错误就崩溃了,那么它可能与您的npm依赖项有关。
深入挖掘后,我发现react packager抛出了错误: “此错误是由两个不同文件中名称相同的@providesModule声明引起的。”
为了修复:
1. 检查/清理依赖项(检查是否存在相同名称的声明) 2. rm -rf node_modules 3. rm -rf $TMPDIR/react-* 4. npm i

有人发现了导致这个错误的特定依赖关系吗?我开始一个项目,在模拟器上运行得很好(现在仍然是),但当我最终开始在设备上加载它时,它可以正常启动并且我可以使用它,但如果我将其滑动关闭,然后尝试重新打开应用程序,它会在启动屏幕上挂起大约10秒钟后崩溃... - mharris7190
@mharris7190,我认为这是因为该应用在iOS调试模式下加载时间太长。我遇到了同样的问题。 - amberv
@amberv 我也持有同样的看法。在 iOS 的调试模式下加载时间太长,这可能是应用程序在启动屏幕后关闭的原因。然而,在启动屏幕上,我无法打开调试菜单以关闭调试模式。那么,还有其他方法吗?尝试卸载但问题仍然存在。 - Jaydip Kalkani

5
这可能是由许多问题引起的。最近我也遇到了这个问题,不得不搜索一下才找到确切原因。我将通过分享我读过的几个地方来为大家省去麻烦。 - 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 所以我的意思是,这是我们做或者没做的事情。多做一些研究会有帮助!

1
我的朋友为了解决这个问题整整浪费了一天的时间,但是毫无头绪。你真是拯救了她的一天! - Osman Gani Khan Masum

2

我曾经遇到过类似的问题。每次在模拟器上运行应用程序时,应用程序都会崩溃,但控制台没有报告任何错误。

以下是一些可能有效的解决方案:

解决方案1 删除 node_modules

rm -rf /node_modules
npm install

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

rm -rf /android/app/build

在此之后,请从模拟器设备中卸载该应用程序,然后再次运行您的应用程序。

1

我也在真机上遇到了同样的问题,但模拟器上却正常工作。因此,我通过以下解决方案解决了我的问题:

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


1

我通过在Xcode中以发布模式运行应用程序最终解决了这个错误。

  1. 进入Product->Scheme,然后点击编辑方案
  2. 从左侧菜单中选择运行
  3. 将Debug更改为Release
  4. 取消勾选Debug executable
  5. 现在清理项目并以发布模式运行您的应用程序
  6. 有时在执行上述操作后,您需要删除pods并重新安装
  7. 在我的情况下,VS code导入了一个库,我只需删除该导入即可在Xcode控制台中查找错误

0
在我的情况下,问题出在缺少 Firebase 的 GoogleService-info.plist 文件,该文件应该在使用 XCode 打开的 project.xcodewrkspc 中存在。添加该文件后问题得到解决。

0

对我来说,Lottie包一直是个问题。在移除该包后,才能启动该程序包。

请确保检查最近安装的程序包/软件包。


是因为链接的问题吗?另外,你尝试手动链接了吗? - Reem

0

我也遇到过这个问题,但触发它的原因是我更新了 React 和 React-Native。

我在更新后进行了构建,然后遇到了同样的问题。我降级回先前的 React 和 React-Native 版本,但对我来说没有用。

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

ios/build 文件中的文件未更新

我执行了 rm -rf ios/build/,然后我运行了 react-native run-ios,ios/build 文件夹会自动填充。之后我的应用程序可以正常运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接