[response-native] не удалось подключиться к серверу разработки на android
Когда я запускаю "response-native run-android", он выдает ошибку: "Не удалось подключиться к серверу разработки...".
- Сервер пакетов работает, и я могу получить к нему доступ непосредственно из браузера
в мобильном устройстве.
- На моем устройстве Android, подключенном к компьютеру, включена отладка.
проверил это с помощью команды adb devices.
- Моя версия для Android - 4.4.4, поэтому я не могу использовать команду adb reverse.
- Я установил IP-адрес и порт в настройке Dev.
- Отладка по USB включена.
- ОС Windows7.
Так как же исправить проблему с красным экраном ошибки? Любое предложение приветствуется!
![Error screen]()
Ответы
Ответ 1
Из Документов:
http://facebook.github.io/react-native/docs/running-on-device.html#method-2-connect-via-wi-fi
Способ 2. Подключение через Wi-Fi
Вы также можете подключиться к серверу разработки через Wi-Fi. Вы
сначала необходимо установить приложение на устройство с помощью USB-кабеля, но
как только это будет сделано, вы можете отлаживать беспроводное соединение, следуя этим инструкции. Вам понадобится ваш текущий компьютер для разработки. адрес перед тем, как продолжить.
Откройте терминал и введите /sbin/ifconfig, чтобы найти IP-адрес вашего компьютера. адрес.
- Убедитесь, что ваш ноутбук и телефон находятся в одной сети Wi-Fi.
- Откройте свое приложение React Native на своем устройстве.
- Вы увидите красный экран с ошибкой. Это нормально. Следующие шаги помогут исправить это.
- Откройте меню разработчика в приложении.
- Перейдите в Настройки Dev → Отладка сервера сервера для устройства.
- Введите IP-адрес устройства и порт локального сервера-разработчика (например, 10.0.1.1:8081).
- Вернитесь в меню "Разработчик" и выберите "Обновить JS".
Ответ 2
В моем случае проблема была с политиками безопасности Android. Согласно документации:
Начиная с Android 9.0 (уровень API 28), поддержка открытого текста по умолчанию отключена.
Но приложение пытается получить доступ к Metro Bundler через HTTP, верно? И вот почему это не может. Чтобы включить трафик в виде открытого android:usesCleartextTraffic="true"
, откройте свой AndroidManifest.xml
и добавьте android:usesCleartextTraffic="true"
в узел <application>
.
Например:
<application
android:name="com.example.app"
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
Вы можете найти больше решений в этой SO: fooobar.com/questions/14264970/.... ОП проблема другая, но похожая.
Ответ 3
Запустите это, и это сработало для меня
adb reverse tcp:8081 tcp:8081
Ответ 4
Начиная с Android 9.0 (уровень API 28), поддержка открытого текста по умолчанию отключена. мы можем использовать Android: usedCleartextTraffic = "true", это будет работать, но это не рекомендуемое решение. Для постоянного и рекомендуемого решения
Шаг 1: создайте файл в папке android app/src/debug/res/xml/network_security_config.xml
Step 2 : add this <?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<!-- deny cleartext traffic for React Native packager ips in release -->
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
<domain includeSubdomains="true">10.0.2.2</domain>
<domain includeSubdomains="true">10.0.3.2</domain>
</domain-config>
</network-security-config>
Step 3 : Apply the config to your AndroidManifest.xml
<application
android:networkSecurityConfig="@xml/network_security_config">
</application>
Ответ 5
Это применимо к Android 9. 0+ в соответствии с Конфигурацией сетевой безопасности.
Итак, попробовав все возможные решения, которые я нашел в Интернете, я решил исследовать нативную Android LogCat вручную. Даже после добавления android:usesCleartextTraffic="true"
я нашел это в logcat:
06-25 02:32:34.561 32001 32001 E unknown:ReactNative: Caused by: java.net.UnknownServiceException: CLEARTEXT communication to 192.168.29.96 not permitted by network security policy
Итак, я попытался проверить исходный код моего приложения. Я обнаружил, что в варианте debug
уже есть конфигурация сетевой безопасности, которая определяется реагирующими парнями, которая конфликтует с вариантом main
.
Там простое решение этого.
Перейти к <app-src>/android/app/src/debug/res/xml/react_native_config.xml
Добавьте новую строку со своим собственным IP-адресом, например:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="false">localhost</domain>
<domain includeSubdomains="false">10.0.2.2</domain>
<domain includeSubdomains="false">10.0.3.2</domain>
***<domain includeSubdomains="false">192.168.29.96</domain>***
</domain-config>
</network-security-config>
Поскольку локальный IP-адрес моего компьютера (проверьте [linux для TG46]) - 192.168.29.96, я добавил строку выше в ***
Затем вам нужно очистить и восстановить для Android!
cd <app-src>/android
./gradlew clean
cd <app-src>
react-native run-android
Я надеюсь, что это работает для вас.
Ответ 6
** Ubuntu Попробуйте запустить эти команды только в корневой папке:
-
sudo npm start --- это автоматически остановится после произнесения: - загрузка графиков выполнена (что-то вроде этого); когда это будет сделано -open другой терминал
-
реагировать-родной запуск андроид
Если проблема сохраняется, удалите папку сборки в Android/IOS, выполните эту команду, а затем выполните вышеупомянутые команды в том же порядке.
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res && react-native run-android**
Ответ 7
Если вы пытаетесь отладить приложение на своем физическом устройстве Android через Wi-Fi с помощью компьютера с Windows, тогда устройство может не иметь доступа к порту вашего компьютера или ноутбука, вам нужно сделать этот порт доступным. это включает в себя два этапа:
-
Сначала создайте правило в брандмауэре. Для этого выполните следующие действия:
- открытый диалог запуска
- введите
wf.msc
- нажмите на входящие правила
- нажмите новое правило на правой стороне
- выберите порт из всплывающего меню и нажмите "Далее"
- выберите порт TCP и конкретные локальные порты и введите номер порта, например
8081
(по умолчанию) - разрешить соединение
- выбрать все в разделе профиля
- дать подходящее имя и описание
- нажмите Готово
-
Вы должны сделать свой компьютер доступным извне, для этого выполните следующие действия:
- открыть сеть и центр обмена с панели управления
- смените настройки адаптера
- выберите свою сеть Wi-Fi
- щелкните правой кнопкой мыши, свойства
- нажмите на вкладку обмена
- установите все флажки
Вы готовы идти, теперь попробуйте запустить реакцию-родной Run-Android.
Ответ 8
Я предполагаю, что ADB установлен в вашей системе.
Чего вам не хватает:
просто установив соединение между вашим android-устройством и упаковщиком узлов.
Следуйте шагам.
1) Start adb server. For this run "adb start-server" command.
2) Then check the connected devices with "adb devices" command. It will give you devices list
3) Then make a connection with this command: "adb -s device_id_got_from_step_2 reverse tcp:8081 tcp:8081".
4) Then try the Hot reload (in iOS press Command+R in Android press Command+M).
5) If Hot reloading doesn't connects then restart the app with Android & Xcode IDE or command line like "react-native run android/ios".
Ответ 9
Это, скорее всего, проблема с брандмауэром. Если кто-то, использующий ubuntu, сталкивается с этой проблемой, вы можете использовать
sudo service iptables stop
чтобы отключить брандмауэр для доступа к портам
Ответ 10
и в первую очередь я ценю вас за то, что вы изложили свои сомнения. Это главным образом потому, что, может быть, ваша выставка или приложение, в котором вы запускаете свой собственный родной проект, могут не находиться в одном локальном подключенном Wi-Fi или локальной сети. Кроме того, есть вероятность, что в вашей связи часто возникают нарушения, из-за которых она теряет связь.
Я тоже сталкиваюсь с этой проблемой, и я лично очищаю кеш, а затем снова перезапускаю и бум перезаписывается. Надеюсь, это сработает и для вас!
Ответ 11
Чтобы добавить к goldylucks
ответ, вы можете использовать IP 192.168.0.10, если это IP-адрес вашего ПК, на котором работает React Native packager.
Возможно, вам также понадобится открыть брандмауэр.
В Ubuntu 18.04 вы можете получить свой IP:
ip -c addr show
Вы увидите свой IP-адрес, например: inet 192.168.0.10/24 brd 192.168.0.255 scope global dynamic noprefixroute enp0s25
(обратите внимание на 192.168.0.10 в моем примере).
Затем вы можете открыть порт 8081 в своем брандмауэре, например:
sudo ufw allow 8081
Он будет использовать TCP, поэтому убедитесь, что TCP открыт на порту 8081.
Затем вы можете следить за ответами на goldylucks и получать Dev settings
и вводить 192.168.0.10:8081
или любой другой IP-адрес, который вам нужен.
Вы можете протестировать его в браузере на своем устройстве. Пока пакет работает с вашего ПК, перейдите на http://192.168.0.10:8081
с вашего мобильного устройства и убедитесь, что он работает. Он покажет что-то вроде "Packager running". Это будет явно работа или неудача.
Ответ Goldylock меня волнует, потому что он решает проблему очень хорошо, если у вас возникают проблемы с сообщениями об ошибках. Это отстой, чтобы все время восстанавливать приложение или еще хуже, удалите APK с вашего устройства, а затем снова создайте его.
Таким образом, вероятно, вы должны использовать wifi как часть стратегии вашего разработчика.
Ответ 12
В моем случае с Android 4.4.2 пришлось сделать несколько дополнительных шагов: (Убедитесь, что rn-сервер запущен npm start, удалите app-debug.apk из android/app/build/output/apk, удалите из android, если ранее были установлены и запущены следующие команды из корневой папки)
1_ create dir mkdir android/app/src/main/assets
2_ create file index.android.js which is a clone of index.js cp index.js index.android.js
3_ react-native link
4_ curl "http://localhost:8081/index.android.bundle?platform=android" -o "android/app/src/main/assets/index.android.bundle"
5_ react-native run-android
Ответ 13
Я тоже встречался с этим вопросом в native и реагировать на native pro, мое решение было:
- открыть сервер
npm start
- запустить собственный проект с Android Studio
- запрос сети передачи с
adb reverse tcp:8081 tcp:8081
- когда вам нужно перезагрузить страницу, просто
adb shell input keyevent 82
: adb shell input keyevent 82
просто держи это в порядке.
PS если вы запустили неудачный проект, просто запустите adb kill-server
Ответ 14
В моем случае у моего эмулятора есть настройка прокси, после выключения все работает нормально.
Ответ 15
Я получил ту же проблему и решил ее, удалив пакет "модуль узла", а затем снова установил пряжу. Просто о некоторых изменениях нам нужно очистить наши
Ответ 16
В основном эта ошибка возникает, когда сервер npm не запущен.
Поэтому сначала проверьте состояние сервера npm, если он не работает, запустите npm с помощью команды npm start
и вы увидите в терминале:
Загрузка графа зависимостей завершена.
Теперь npm запущен и запустите ваше приложение в другом терминале с помощью команды
react-native run-android
Ответ 17
Убедитесь, что сервер NPM работает. Остальное запусти снова. Это решит проблему.
Ответ 18
Для меня я удалил пакет, который я недавно установил, и проект снова запустился на моем физическом устройстве с помощью следующей команды "npm uninstall latestPackageName", надеюсь, это поможет :)
Ответ 19
Самый простой для MAC. Получить IP-адрес вашей сети Wi-Fi через ipconfig getifaddr en0
. Затем напишите этот ip в ваш DEV settings -> Debug server host & port for device
добавив :8081
пример. 192.21.22.143:8081
. Затем перезагрузите. Это
Ответ 20
Мы столкнулись с этой проблемой: для того, чтобы исправить это, решение было мертвым простым.
- Отменить текущий процесс "run-and-and-and-and-and-and-and-and-off-and-and-and-and-and-and-off-and-and-and-and-off-and-and-and-and-and-and-and-and-off-and-and-and-and-and-and-and-and-off-on
или CMD + C
- Закрытие командной строки закрывающего окна соединителя
автоматически.
- Выполните команду еще раз, "run-native run-android".
В основном эта ошибка говорит о том, что ваша текущая сборка не удалась из-за таких причин, как проблема с кодом или проблема зависимости.
Нажмите здесь для получения более подробной информации
Ответ 21
В основном эта ошибка говорит о том, что ваша текущая сборка не удалась из-за таких причин, как проблема с кодом или проблема зависимости.
Чтобы исправить эту проблему, решение является простым.
- Отмените текущий процесс
react-native run-android
на основе реакции на CTRL + C или CMD + C - Закрыть командную строку окна диспетчера сетей метро, которая автоматически открывается
- Выполните команду еще раз,
react-native run-android