我试图在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的建议有不好的经验,假设我知道系统中的每个文件是什么以及在哪里找到它。)
提前完成。
当我检查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
对不起,这是我现在可以做的所有测试。还有其他想法吗?
“只是为了确保它使用位于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
这似乎表明不是这样。我应该改变吗?
好的,我查了解如何删除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
还有其他想法吗?我错过了什么吗? (极有可能)
好的,完全删除了Java,主要是this。
我使用this重新安装了它。
在使用genymotion进行一些讨论后,我能够在genymotion上运行的create-react-native-app上启动应用程序。
谢谢@ vigas-deep。如果你甚至在奥克兰,我欠你一杯啤酒,或者你选择的饮料。感谢名单!
答案 0 :(得分:2)
我在Ubuntu和其他基于Linux的操作系统方面有八年的经验。
我认为问题是你有多个版本的ADB。
运行以下命令以了解是否正确。
which -a adb
如果你有多个版本的adb,只需保留你的android sdk中的adb版本并删除/重命名其他版本。
如果再次需要这些可执行文件,更喜欢重命名。
如果需要,我很乐意提供更多帮助。