【问题标题】:React Native app opens and closes quickly after installation on ios simulatorReact Native 应用在 ios 模拟器上安装后快速打开和关闭
【发布时间】:2018-01-13 23:39:30
【问题描述】:

我一直在使用 React Native 开发一个应用程序,当我切换到 Mac 环境来设置 ios 的配置时,在所有设置完成后,应用程序打开非常快,安装后关闭,显示由反应原生屏幕提供支持。我注意到在我的打包程序屏幕中,显示已加载多少进度的包中的行没有出现,就好像它从未加载过一样。如果我尝试从 Xcode 运行代码,也会发生同样的事情。

这是我正在谈论的屏幕,用于我为比较目的而开始的测试项目:

这是我的应用程序的同一个屏幕,没有显示进度指示器:

我尝试遵循社区为类似问题提供的一些解决方案,但都没有奏效。请注意,我的终端窗口中没有显示错误消息,好像构建和安装已经成功。

有人可以帮我解决这个问题吗?我一直在为这个应用程序苦苦挣扎,因为 react native 似乎总是崩溃并为我显示错误消息。任何帮助将不胜感激:)

编辑:忘了提到我正在尝试在模拟器上运行应用程序,因为我没有实际设备。

【问题讨论】:

  • 我遇到了同样的问题...如果我找到任何东西会告诉你。
  • 我遇到了同样的问题,伙计。我在 linux 环境中开发,当我将我的应用程序更改为 Mac 环境时,我面临着同样的问题。我为android下载了所有东西,它工作正常。问题是当我尝试在 iOS 上运行时。我认为如果您在他们的 github 存储库上打开一个问题是个好主意。只是一个简单的问题:您是否使用 react-native-firebase 和/或 facebook-sdk (FBSDK)?
  • @RafaelGrilli 是的,我正在使用 react-native-firebase。我发现的“解决方案”是创建一个新的 react native 项目,将所有代码复制到其中并再次配置所有 dendencies。对于每个依赖项,我都会测试应用程序是否会运行,最后我没有遇到同样的问题。我仍然不知道为什么会发生这种情况
  • @GabrielSchneider,如果您还在使用旧项目,请在控制台输入“react-native log-ios”,尝试打开应用程序,然后您将能够看到问题。我发现这是因为我没有正确导入 firebase 库。
  • @RafaelGrilli 抱歉回复晚了。我不得不说我没想过记录日志来查看任何错误,好主意。谢谢

标签: react-native react-native-ios


【解决方案1】:

昨天我也安装了react-native-firebase时恰好发生了这个问题。我跑了react-native run-ios,应用一打开就关闭了,没有任何具体错误。

我决定从 Xcode 运行应用程序,所以我打开了 Xcode 项目。更准确地说,我打开了<Project>.xcworkspace,因为我安装了 CocoaPods。在我尝试运行应用程序时的日志中,我发现了错误。它说没有找到GoogleService-Info.plist。当我浏览 Xcode 工作区时,我没有看到该文件,尽管它存在于我的 IDE(VSCode)中的/ios/<Project>/ 下。所以可能只是同步问题。

所以基本上我也在 Xcode 中添加了文件,重新运行,应用程序运行良好。

当然,我不知道我是否能找到一些可靠的消息来源,但这个确切的问题发生在我身上,与你的情况完全相同。

【讨论】:

  • 我不小心将 GoogleService-Info.plist 添加到 /ios/// 并导致我的应用程序像这样失败,直到我将它移到 /ios//
【解决方案2】:

一些解决方案...

  • 如果您使用的是最新的 react 版本,请尝试降级。
  • 重新启动您的应用程序并尝试再次运行。
  • 删除节点模块文件夹并使用npm install运行。
  • 尝试使用 XCODE 打开项目并通过它进行构建。

    很可能问题出在您的反应版本上。尝试降级到稳定的反应版本并尝试

【讨论】:

  • 我怎么知道什么是稳定的 react 版本?
【解决方案3】:

检查日志是否有错误,在终端上运行react-native log-ios并监控它是否有错误。

或者您可以通过按command+D 从模拟器中启用远程调试 JS 选项并检查控制台是否有错误。

【讨论】:

    【解决方案4】:

    尝试使用 adb logcat *:E,这将有助于您尝试查找与 js 无关的问题。

    【讨论】:

      【解决方案5】:

      我取决于你的 react-native 的版本,如果你使用它的最新版本,0.56.0(现在)它有一个已知问题,你可以在这里看到,它应该会在下一个修复0.57.0版

      https://github.com/facebook/react-native/issues/19953

      虽然是安卓版本的问题,但在ios也有类似的问题 (最新评论,提供有关错误的更多信息)

      目前可能的解决方法是降级到 0.55.4 或 0.55.0

      如果这不能解决您的问题,请在问题中添加 package.json 和 build.gradle 信息来提供有关您的应用的更多信息

      【讨论】:

        【解决方案6】:

        添加 firebase crashlytics 或反复打开该应用程序,以便导航到日志屏幕以查找问题。主要是由于配置错误的 pod 设置造成的。所以请检查你的 Podfile。因为所有其他错误都出现在应用程序的内部错误控制台中。我附上了非错误格式的 Podfile 供您参考。这只是一个例子

        Podfile

        require_relative '../node_modules/react-native/scripts/react_native_pods'
        require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' 
        platform :ios, '12.0'
        
        target 'iospodapp' do 
          config = use_native_modules!  
          use_react_native!(
            :path => config[:reactNativePath],
            # to enable hermes on iOS, change `false` to `true` and then install pods
            :hermes_enabled => false
          ) 
          permissions_path = '../node_modules/react-native-permissions/ios'
          pod 'Permission-LocationAlways', :path => "#{permissions_path}/LocationAlways.podspec"
          pod 'Permission-LocationWhenInUse', :path => "#{permissions_path}/LocationWhenInUse.podspec"
          pod 'Permission-MediaLibrary', :path => "#{permissions_path}/MediaLibrary.podspec"
          pod 'Permission-Notifications', :path => "#{permissions_path}/Notifications.podspec"
          pod 'Permission-PhotoLibrary', :path => "#{permissions_path}/PhotoLibrary.podspec"
        
          pod 'YogaKit'  
          pod 'Firebase/Performance'
          pod 'Firebase/Messaging'    
          pod 'RNVectorIcons', :path => '../node_modules/react-native-vector-icons' 
          pod 'react-native-orientation', :path => '../node_modules/react-native-orientation'
          pod 'RNFS', :path => '../node_modules/react-native-fs'
        
          target 'iospodappTests' do
            inherit! :complete
            # Pods for testing
          end
        
          # Enables Flipper.
          #
          # Note that if you have use_frameworks! enabled, Flipper will not work and
          # you should disable the next line.
          
          use_flipper!() 
        
          post_install do |installer|
            flipper_post_install(installer)
            installer.pods_project.targets.each do |target|
              target.build_configurations.each do |config|
                config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
               end
            end 
          end
        end
        

        注意:

        1. 如果您使用的是 firebase,请不要忘记通过 xcode 将 GoogleService-Info.plist 添加到您的 ios 目录中。
        2. 如果您使用 Firebase 分析也会导致崩溃。因为它需要更多的配置来避免崩溃。因此,请先检查您的构建而不使用 Firebase 分析。如果一切正常,您可以稍后添加分析

        【讨论】:

          猜你喜欢
          • 2019-12-21
          • 2017-10-11
          • 1970-01-01
          • 2016-11-07
          • 1970-01-01
          • 2020-02-21
          • 2016-11-08
          • 1970-01-01
          • 2019-06-30
          相关资源
          最近更新 更多