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 的设备上的启动屏幕中崩溃
如何禁用 Android 上的设备后退按钮(react-native)?