【问题标题】:React Native: app doesn't load, but no error messages, after installing react-navigationReact Native:安装 react-navigation 后应用程序不加载,但没有错误消息
【发布时间】:2020-02-24 13:55:23
【问题描述】:

我按照 React Native 的 get started 页面中的所有步骤操作,包括运行 npx react-native init AwesomeProject 来创建一个入门项目。 (我正在遵循“React Native CLI 快速入门”/“macOS”/“Android”的步骤)。然后我打开 Android Studio,启动模拟器,cd 进入项目文件夹,然后运行npx react-native run-android。一切正常。我可以在这里和那里调整启动项目,重新加载,一切正常。

但我需要使用 React Navigation。我按照here 的步骤进行操作,显然 React Navigation 已安装,没有任何问题。然后,当我再次运行npx react-native run-android 时,事情构建成功,而 Metro 事情——单独的终端选项卡/窗口——说“完成”。但是模拟器没有显示我的应用程序。一秒钟它显示一个空白页面,然后消失,我得到了模拟器的主屏幕。即使我根本不调整启动代码 - 我什至没有尝试导入 React Navigation,我需要做的就是安装它来导致此错误。

这是npx react-native run-android 之后我的终端标签的样子:

我尝试在安装 React Navigation 后关闭终端和 Android Studio。一样的。

我使用的是 macOS 10.15.3 和 Android Studio 3.5.3。

我做错了什么?

【问题讨论】:

  • 调试器激活了吗?关闭该选项卡,从模拟器中禁用它并再次运行该应用程序

标签: android react-native npm


【解决方案1】:

我也看到了这个问题。

旁白:我使用 Android Studio 的 logcat 查看启动我的应用程序时产生的任何错误。我的 logcat 包含以下错误。虽然这对我帮助不大。

--------- beginning of crash
2020-05-04 12:14:45.284 6139-6170/com.gettingstarted E/AndroidRuntime: FATAL EXCEPTION: FlipperConnectionThread
    Process: com.gettingstarted, PID: 6139
    java.lang.NoClassDefFoundError: <clinit> failed for class com.facebook.flipper.android.EventBase; see exception in other thread
        at com.facebook.flipper.android.FlipperThread.run(FlipperThread.java:25)
2020-05-04 12:14:45.285 6139-6169/com.gettingstarted E/AndroidRuntime: FATAL EXCEPTION: FlipperEventBaseThread
    Process: com.gettingstarted, PID: 6139
    java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libfbjni.so result: 0
        at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:825)
        at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:673)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:611)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:559)
        at com.facebook.soloader.NativeLoaderToSoLoaderDelegate.loadLibrary(NativeLoaderToSoLoaderDelegate.java:25)
        at com.facebook.soloader.nativeloader.NativeLoader.loadLibrary(NativeLoader.java:44)
        at com.facebook.jni.HybridData.<clinit>(HybridData.java:34)
        at com.facebook.flipper.android.FlipperThread.run(FlipperThread.java:25)
2020-05-04 12:14:45.416 6171-6178/? E/.gettingstarte: Failed to send DDMS packet REAQ to debugger (-1 of 20): Broken pipe
2020-05-04 12:14:45.709 6171-6171/? E/SoLoader: couldn't find DSO to load: libjscexecutor.so result: 0
2020-05-04 12:14:45.800 6171-6203/? E/SoLoader: couldn't find DSO to load: libfbjni.so result: 0
2020-05-04 12:14:45.801 6171-6204/? E/AndroidRuntime: FATAL EXCEPTION: FlipperConnectionThread
    Process: com.gettingstarted, PID: 6171
    java.lang.NoClassDefFoundError: <clinit> failed for class com.facebook.flipper.android.EventBase; see exception in other thread
        at com.facebook.flipper.android.FlipperThread.run(FlipperThread.java:25)
2020-05-04 12:14:45.801 6171-6203/? E/AndroidRuntime: FATAL EXCEPTION: FlipperEventBaseThread
    Process: com.gettingstarted, PID: 6171
    java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libfbjni.so result: 0
        at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:825)
        at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:673)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:611)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:559)
        at com.facebook.soloader.NativeLoaderToSoLoaderDelegate.loadLibrary(NativeLoaderToSoLoaderDelegate.java:25)
        at com.facebook.soloader.nativeloader.NativeLoader.loadLibrary(NativeLoader.java:44)
        at com.facebook.jni.HybridData.<clinit>(HybridData.java:34)
        at com.facebook.flipper.android.FlipperThread.run(FlipperThread.java:25)
2020-05-04 12:14:45.817 1656-1656/? E/lowmemorykiller: Error writing /proc/6171/oom_score_adj; errno=22
2020-05-04 12:14:45.905 1775-1804/? E/SurfaceFlinger: ro.sf.lcd_density must be defined as a build property

在网上搜索我发现有人说要清洁您的环境。因此我做了以下操作

  • 创建了一个新的模拟器:仍然没有更改问题
  • 删除“node_modules”和“package-lock.json”,然后运行“npm install”:没有变化
    问题仍然存在
  • 已清除所有缓存/“node_modules”/“package-lock.json”:仍然没有更改问题
    • 删除了 Metro 缓存(在我的机器上它在“rm -rf $TEMP/metro-cache”中,其他人说它在“rm -rf $TEMP/metro-bundler-cache-*”中)
    • 其他人说要删除“rm -rf $TEMP/react-native-packager-cache-*”,但我的 Windows 机器上没有“react-native-packager-cache”文件夹
    • 删除 node_modules 和 package-lock.json 然后运行“npm install”
    • “npm 缓存清理 --force”

我终于找到了工作环境

  • 删除“node_modules”和“package-lock.json”
  • “npm 安装”
  • “cd android”
  • “分级清洁”
  • 回到根目录运行应用程序

对我来说,从 Android 下清理 gradle 缓存似乎是关键步骤。

【讨论】:

    【解决方案2】:
    1. 在构建您的应用程序之前,运行“adb devices”并检查模拟器是否显示在列表中。如果不是,那就是问题所在。

    2. 我知道你说过你遵循了 React Navigation Documentation 上的所有内容,但请确保你没有跳过下面的内容:

    要完成 react-native-gesture-handler 的安装,请添加 跟随在顶部(确保它在顶部并且没有任何东西 else before it) 的入口文件,例如 index.js 或 App.js:

    import 'react-native-gesture-handler';

    注意:如果您跳过此步骤, 即使在开发中运行良好,您的应用也可能在生产中崩溃。

    【讨论】:

      【解决方案3】:

      我可以这样解决问题:

      1. npm install react-navigation

      2. expo install react-native-gesture-handler react-native-reanimated react-native-screens react-native-safe-area-context @react-native-community/masked-view

      3. npm install react-navigation-stack @react-native-community/masked-view

      4. expo r -c

      我们还知道 createStackNavigator 已移至“react-navigation-stack”:

      import { createStackNavigator } from 'react-navigation-stack';
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-21
        • 1970-01-01
        • 1970-01-01
        • 2022-12-22
        • 2020-06-15
        • 1970-01-01
        • 1970-01-01
        • 2019-06-25
        相关资源
        最近更新 更多