【问题标题】:npm run android hangs on 'Loading dependency graph, done' (BlueWallet)npm run android 挂起“加载依赖图,完成”(BlueWallet)
【发布时间】:2019-03-08 17:11:38
【问题描述】:

我正在尝试从 this github source 克隆 BlueWallet。

我克隆了项目并安装了所需的包。此外,模拟器运行 android studio AVD。

但每当我尝试运行 npm start android 时,它就会挂在文本 Loading dependency graph, done. 上,不会再发生任何事情!

这很奇怪,因为每当我尝试运行相同的场景和命令来启动连接到模拟器的纯 react-native 时,它​​都可以正常工作。

npm start android 的结果如下:

$ npm start android

> BlueWallet@3.8.3 start /home/Learning/ReactNative/BlueWallet
> node node_modules/react-native/local-cli/cli.js start "android"

   ┌─────────────────────────────────────────────────────────────────────────────        ─┐
│                                                                                  │
│  Running Metro Bundler on port 8081.                                             │
│                                                                                  │
│  Keep Metro running while developing on any JS projects. Feel free to            │
│  close this tab and run your own Metro instance if you prefer.                   │
│                                                                                  │
│  https://github.com/facebook/react-native                                        │
│                                                                                  │
└─────────────────────────────────────────────────────────────────────────────    ─┘

Looking for JS files in
   /home/Learning/ReactNative/BlueWallet 

Loading dependency graph, done.

【问题讨论】:

  • 当应用已经安装在设备上时使用 react-native start。当我们需要在设备上安装应用程序并启动服务器时,使用 react-native run-android。但是当我们在项目中安装新包时,我们需要使用 react-native run-android 重启服务器
  • 我的问题是它卡在Loading dependency graph, done.。但是当我用模拟器启动一个纯 react-native 应用程序时,将没有问题。
  • 关闭应用程序并在您的设备中重新打开它,同时打包程序仍在运行。
  • 关闭什么应用?我正在尝试创建实时开发模式,以便我的更改显示在模拟器上。默认情况下它会在创建的模拟器之间建立连接,但不知道为什么这个项目没有发生。

标签: android react-native avd


【解决方案1】:

我自己找到了解决方案。实际上Loading dependency graph, done 实际上并不是一个错误,服务器不会挂起任何东西。它只是在等待模拟器连接到它。

这是我所做的:

  • 在单独的终端中,我确实运行了npm start,这样服务器(打包程序)正在启动。

  • 在另一个终端中,我运行npm run android。现在将选择模拟器并将连接到第一个命令中的服务器正在运行的 8081 端口上,一切都会好起来的。

注意:我确实对项目的某些部分做了一些曲折,并在操作系统上做了如下的事情。如果将来有人想做同样的事情,也许对他有用:

  • 将 java home 变量设置为正确(将其添加到 bashrcprofile 或 ..)

    export JAVA_HOME="/usr/lib/jvm/java-10-openjdk"
    export PATH=$JAVA_HOME/bin:$PATH
    
  • 设置android SDK和其他环境变量;

    export ANDROID_HOME=/home/execut3/android-sdk
    export ANDROID_SDK_ROOT=/home/execut3/android-sdk
    export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
    export PATH=$ANDROID_HOME/emulator:$ANDROID_HOME/tools:$PATH
    
  • 运行模拟器

    $ emulator -list-avds
    $ emulator -avd <avd name>
    
  • 如果发生错误Execution failed for task ':app:compileDebugJavaWithJavac' react native,在第19行的android/app/src/main/java/com/bluewallet/MainApplication.java中,将其更改为return true以忽略调试。另外,这个link 也很有用。

  • google() 存储库添加到比android/build.gradle 文件中其他位置更高的位置。

  • package.json 文件中将react-native 的版本更改为0.57.5 并删除node_modules 然后重新安装。

【讨论】:

    【解决方案2】:

    在我的情况下,当应用程序运行出现有关“BASE_MAP.fill(255)”的错误时,我尝试使用“react-native run-android”。然后我运行“npm run prepare”来解决上面提到的错误。希望我的解决方案能帮到你。

    The app runs in my Android

    【讨论】:

      【解决方案3】:

      我有时会遇到这个问题,特别是当你按 ctrl+c 杀死节点服务器时 id 做了一些事情,比如卸载节点并安装较低版本,然后 n 安装最新版本 在另一个端口上运行节点服务器

      react-native start --port=8082
      

      【讨论】:

      • 抱歉,这不是正确的解决方案,因为它已经在端口 8081 上运行良好。正如我所说的它正在运行,我只需要在 Android 上也运行它,以便 android 模拟器可以连接到它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-28
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      相关资源
      最近更新 更多