无法让React Native在Ubuntu上工作

时间:2018-05-15 20:15:23

标签: android android-studio ubuntu react-native genymotion

我试图在Ubuntu 16.04上运行React Native。我在我的Windows机器上使用了create-react-native-app和expo,Android Studio虚拟设备和通过USB连接的平板电脑。现在我在我的电脑上安装了一台新的Ubuntu笔记本电脑和一台Ubuntu双启动器,我试图将它设置在那里但是却失败了。

让我们来处理笔记本电脑。按照说明,我安装了Expo和Genymotion。世博会永远不会正常运作,所以现在我只是想让它更直接。我还安装了Java 8和watchman。我已经安装并尝试了很多东西。到目前为止,我已经投入了大约20个小时。

以下是我尝试开始时会发生的事情。

如果我插入平板电脑,我会:

kevin@kevin-Kudu:~/programming/rn4$ adb devices
adb server is out of date.  killing...
* daemon started successfully *
List of devices attached 
5205132d4f9011af    device

(作为旁注,似乎我的adb服务器总是过时了。)当我尝试运行{em> react-native-cli 安装的默认代码时,运行{{1}我得到了:

react-native run-android

我研究了这些错误,找不到有效的解决方案。

如果我启动Android Studio虚拟设备(N6,API 23),它会启动。 kevin@kevin-Kudu:~/programming/rn4$ react-native run-android Scanning folders for symlinks in /home/kevin/programming/rn4/node_modules (9ms) Starting JS server... Building and installing the app on the device (cd android && ./gradlew installDebug)... Error occurred during initialization of VM java/lang/NoClassDefFoundError: java/lang/Object Could not install the app on the device, read the error above for details. Make sure you have an Android emulator running or a device connected and have set up your Android development environment: https://facebook.github.io/react-native/docs/getting-started.html 让我:

adb devices

当我尝试运行该应用时:

kevin@kevin-Kudu:~/programming/rn4$ adb devices
adb server is out of date.  killing...
* daemon started successfully *
List of devices attached 
5205132d4f9011af    device

同样,我还没有找到解决方案的苹果。

当我尝试通过genymotion做同样的事情并做kevin@kevin-Kudu:~/programming/rn4$ react-native run-android Scanning folders for symlinks in /home/kevin/programming/rn4/node_modules (9ms) Starting JS server... Building and installing the app on the device (cd android && ./gradlew installDebug)... Error occurred during initialization of VM java/lang/NoClassDefFoundError: java/lang/Object Could not install the app on the device, read the error above for details. Make sure you have an Android emulator running or a device connected and have set up your Android development environment: https://facebook.github.io/react-native/docs/getting-started.html 时,我得到:

adb devices

当我尝试运行应用程序时,我得到了相同的结果。

我接下来应该尝试什么想法?请记住,我仍然是相当新的Linux所以请具体。如果你告诉我,“只需在Fetzer配置文件中更改RX74常量”,我就不会知道你在说什么。 (我对linux的建议有不好的经验,假设我知道系统中的每个文件是什么以及在哪里找到它。)

提前完成。

ADDENDUM 1 @Vigas Deep:

当我检查kevin@kevin-Kudu:~/programming/rn4$ adb devices adb server is out of date. killing... cannot bind 'tcp:5037' ADB server didn't ACK * failed to start daemon * error: 时:

which -a adb

所以我不止一个。我会弄清楚为什么一次被调用两次,现在我只是重命名它,现在我得到了:

kevin@kevin-Kudu:~$ which -a adb
/usr/bin/adb
/usr/bin/adb
/home/kevin/Android/Sdk/platform-tools/adb

我启动Android Studio虚拟设备并检查它:

kevin@kevin-Kudu:~$ which -a adb
/home/kevin/Android/Sdk/platform-tools/adb

当我尝试运行RN入门应用程序时:

kevin@kevin-Kudu:~$ adb devices
List of devices attached
emulator-5554   device

有趣的是,当我尝试重新启动adb服务器时,我得到:

kevin@kevin-Kudu:~/programming/rn4$ react-native run-android
Scanning folders for symlinks in /home/kevin/programming/rn4/node_modules (18ms)
Starting JS server...
Building and installing the app on the device (cd android && ./gradlew installDebug)...
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
Could not install the app on the device, read the error above for details.
Make sure you have an Android emulator running or a device connected and have
set up your Android development environment:
https://facebook.github.io/react-native/docs/getting-started.html

SDK中的adb是否没有这些命令?

只是为了踢,我重新启动并尝试在平板电脑中插件:

kevin@kevin-Kudu:~/programming/rn4$ sudo adb kill-server && adb start-server
[sudo] password for kevin: 
sudo: adb: command not found

(但由于某种原因,只有在插入USB2端口时才显示,位置非常不方便。)

当我尝试运行RN项目时:

kevin@kevin-Kudu:~$ adb devices
List of devices attached
5205132d4f9011af    device

对不起,这是我现在可以做的所有测试。还有其他想法吗?

ADDENDUM 2 @Vigas Deep:

“只是为了确保它使用位于sdk内的adb;现在使用此命令:/ home / kevin / Android / Sdk / platform-tools / adb devices”

好的,无论我使用哪种结果,都会得到相同的结果。

“并且不要将sudo用于adb命令,因为我们不打算将反应原生的run-android作为sudo运行。”

行。我看到的所有示例都使用sudo启动并终止adb服务器。奇怪的是,现在它没有 sudo,但没有。在此之前,我认为情况正好相反,但我没有在很长一段时间内尝试过,所以我无法确定。

“另外;你使用的是openJDK还是oracleJDK;你是如何安装JDK的?”

我以为我记得去过Oracle网站,但当我做“java -version”时,我得到:

kevin@kevin-Kudu:~/programming/rn4$ react-native run-android
Scanning folders for symlinks in /home/kevin/programming/rn4/node_modules (21ms)
Starting JS server...
Building and installing the app on the device (cd android && ./gradlew installDebug)...
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
Could not install the app on the device, read the error above for details.
Make sure you have an Android emulator running or a device connected and have
set up your Android development environment:
https://facebook.github.io/react-native/docs/getting-started.html

这似乎表明不是这样。我应该改变吗?

ADDENDUM 3 @Vigas Deep:

好的,我查了解如何删除openjdk并关注它。我发现有关如何安装jdk8的说明,只是为了确定。当我尝试运行RN应用程序时,我收到同样的错误。当我查看kevin@kevin-Kudu:~/programming/rn4$ java -version java version "1.7.0_95" OpenJDK Runtime Environment (IcedTea 2.6.4) (7u95-2.6.4-3) OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)

java -version

kevin@kevin-Kudu:~/programming/rn4$ java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

当我检查jvm文件夹时:

kevin@kevin-Kudu:~/programming/rn4$ readlink -f $(which java)
/usr/lib/jvm/java-8-oracle/jre/bin/java

以防万一,这是我现在的$ PATH:

kevin@kevin-Kudu:/usr/lib/jvm$ ls
java-8-oracle

还有其他想法吗?我错过了什么吗? (极有可能)

ADDENDUM 4 @Vigas Deep:

好的,完全删除了Java,主要是this

我使用this重新安装了它。

在使用genymotion进行一些讨论后,我能够在genymotion上运行的create-react-native-app上启动应用程序。

谢谢@ vigas-deep。如果你甚至在奥克兰,我欠你一杯啤酒,或者你选择的饮料。感谢名单!

1 个答案:

答案 0 :(得分:2)

我在Ubuntu和其他基于Linux的操作系统方面有八年的经验。

我认为问题是你有多个版本的ADB。

运行以下命令以了解是否正确。

which -a adb

如果你有多个版本的adb,只需保留你的android sdk中的adb版本并删除/重命名其他版本。

如果再次需要这些可执行文件,

更喜欢重命名。

如果需要,我很乐意提供更多帮助。