Я пытаюсь запустить React Native в Ubuntu 16.04.Я использовал его для создания и реагирования на приложения на своей машине с Windows, используя виртуальное устройство Android Studio и планшет, подключенный через USB.Теперь у меня есть новый ноутбук Ubuntu и двойная загрузка Ubuntu на моем ПК, и я пытаюсь установить его там, но с треском провалился.
Давайте разберемся с ноутбуком.Следуя инструкциям, я установил Expo и Genymotion.Экспо никогда не могло работать правильно, поэтому сейчас я просто пытаюсь сделать его более прямым.Я также установил Java 8 и сторож.Я установил и перепробовал слишком много вещей, чтобы упомянуть.Я потратил около 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 всегда устарел.) Когда я пытаюсь запустить код по умолчанию, установленный реагировать-родной-Cli , запустив react-native run-android
, яget:
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
Я исследовал эти ошибки и не могу найти решение, которое работает.
Если я запускаю виртуальное устройство Android Studio (N6, API 23), оно запускаетсявверх.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
Когда я пытаюсь запустить приложение:
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
Опять же, я не был Apple, чтобы найти решение.
Когда я пытаюсь сделать то же самое с помощью genymotion и делать adb devices
, я получаю:
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:
Я получаю тот же результат, когда пытаюсь запустить приложение.
Любые идеичто я должен попробовать дальше?Пожалуйста, помните, что я все еще довольно новичок в Linux, поэтому, пожалуйста, будьте конкретны.Если вы скажете мне: «Просто измените константу RX74 в конфигурационном файле Fetzer», я не пойму, о чем вы говорите.(У меня был плохой опыт работы с советами по Linux, которые предполагают, что я знаю, что такое каждый файл в системе и где его найти.)
Заранее спасибо.
ADDENDUM 1 @Vigas Deep:
Когда я проверяю which -a adb
:
kevin@kevin-Kudu:~$ which -a adb
/usr/bin/adb
/usr/bin/adb
/home/kevin/Android/Sdk/platform-tools/adb
Так что у меня их больше одного.Я выясню, почему один из них вызывается дважды, сейчас я просто переименую его, и теперь я получаю:
kevin@kevin-Kudu:~$ which -a adb
/home/kevin/Android/Sdk/platform-tools/adb
Я запускаю виртуальное устройство Android Studio и проверяю его:
kevin@kevin-Kudu:~$ adb devices
List of devices attached
emulator-5554 device
И когда я пытаюсь запустить приложение RN Starter:
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
Интересно, когда я пытаюсь перезапустить сервер ADB, я получаю:
kevin@kevin-Kudu:~/programming/rn4$ sudo adb kill-server && adb start-server
[sudo] password for kevin:
sudo: adb: command not found
Имеет ли ADBв SDK нет этих команд?
Просто для пинка перезагружаюсь и пробую плагин в планшете:
kevin@kevin-Kudu:~$ adb devices
List of devices attached
5205132d4f9011af device
(Но почему-то появляется только при подключении к порту USB2, очень неудобно расположен.)
Когда я пытаюсь запустить проект RN:
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 2 @Vigas Deep:
"просто чтобы убедиться, что он использует adb, расположенный внутри SDK; используйте эту команду сейчас: / home / kevin / Android / Sdk/ platform-tools / adb devices "
ОК, в зависимости от того, что я использую, я получаю один и тот же результат.
" и не использую sudo для команды adb, потому что мы не собираемся запускать реагировать на нативныйзапустить андроид как sudo. "
ОК.Все примеры, которые я видел, использовали sudo для запуска и уничтожения сервера adb.Странно, теперь он работает без sudo, но не с.Раньше я думал, что это было наоборот, но я не пробовал без него в течение длительного времени, поэтому я не уверен.
"Кроме того, вы используете openJDK или oracleJDK; как вы установилиJDK? "
Мне показалось, что я вспомнил посещение сайта Oracle, но когда я делаю" java -version ", я получаю:
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)
Это может указывать на обратное.Должен ли я его изменить?
ADDENDUM 3 @Vigas Deep:
ОК, я посмотрел, как удалить openjdk, и последовал за ним.Я нашел инструкции о том, как установить JDK8, просто чтобы быть уверенным.Я получаю ту же ошибку при попытке запустить приложение RN.Когда я проверяю 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)
и
kevin@kevin-Kudu:~/programming/rn4$ readlink -f $(which java)
/usr/lib/jvm/java-8-oracle/jre/bin/java
Когда я проверяю папку jvm:
kevin@kevin-Kudu:/usr/lib/jvm$ ls
java-8-oracle
На всякий случай, вот мой текущий$ PATH:
kevin@kevin-Kudu:/usr/lib/jvm$ echo -e ${PATH//:/\\n}
/home/kevin/bin
/home/kevin/.local/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/home/kevin/bin
/usr/bin
/snap/bin
/usr/lib/jvm/java-8-oracle/bin
/usr/lib/jvm/java-8-oracle/db/bin
/usr/lib/jvm/java-8-oracle/jre/bin
/home/kevin/Android/Sdk/tools
/home/kevin/Android/Sdk/platform-tools
Есть еще идеи? Я что-то пропустил? (весьма вероятно)
ADDENDUM 4 @Vigas Deep:
ОК, поэтому полностью удалил Java, в основном следуя this .
Я переустановил его, используя this .
После некоторых манипуляций с genymotion я смог запустить приложение на create-реагировать-native-приложение, которое работало на genymotion.
Спасибо @ vigas-deep. Если вы даже в Окленде, я должен вам пиво или любой другой напиток по вашему выбору. Thanx!