Подтвердить что ты не робот

[response-native] не удалось подключиться к серверу разработки на android

Когда я запускаю "response-native run-android", он выдает ошибку: "Не удалось подключиться к серверу разработки...".

  • Сервер пакетов работает, и я могу получить к нему доступ непосредственно из браузера в мобильном устройстве.
  • На моем устройстве Android, подключенном к компьютеру, включена отладка. проверил это с помощью команды adb devices.
  • Моя версия для Android - 4.4.4, поэтому я не могу использовать команду adb reverse.
  • Я установил IP-адрес и порт в настройке Dev.
  • Отладка по USB включена.
  • ОС Windows7.

Так как же исправить проблему с красным экраном ошибки? Любое предложение приветствуется!

Error screen

4b9b3361

Ответ 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 Попробуйте запустить эти команды только в корневой папке:

  1. sudo npm start --- это автоматически остановится после произнесения: - загрузка графиков выполнена (что-то вроде этого); когда это будет сделано -open другой терминал

  2. реагировать-родной запуск андроид


Если проблема сохраняется, удалите папку сборки в 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, тогда устройство может не иметь доступа к порту вашего компьютера или ноутбука, вам нужно сделать этот порт доступным. это включает в себя два этапа:

  1. Сначала создайте правило в брандмауэре. Для этого выполните следующие действия:

    • открытый диалог запуска
    • введите wf.msc
    • нажмите на входящие правила
    • нажмите новое правило на правой стороне
    • выберите порт из всплывающего меню и нажмите "Далее"
    • выберите порт TCP и конкретные локальные порты и введите номер порта, например 8081 (по умолчанию)
    • разрешить соединение
    • выбрать все в разделе профиля
    • дать подходящее имя и описание
    • нажмите Готово
  2. Вы должны сделать свой компьютер доступным извне, для этого выполните следующие действия:

    • открыть сеть и центр обмена с панели управления
    • смените настройки адаптера
    • выберите свою сеть 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, мое решение было:

  1. открыть сервер npm start
  2. запустить собственный проект с Android Studio
  3. запрос сети передачи с adb reverse tcp:8081 tcp:8081
  4. когда вам нужно перезагрузить страницу, просто 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

В основном эта ошибка говорит о том, что ваша текущая сборка не удалась из-за таких причин, как проблема с кодом или проблема зависимости.

Чтобы исправить эту проблему, решение является простым.

  1. Отмените текущий процесс react-native run-android на основе реакции на CTRL + C или CMD + C
  2. Закрыть командную строку окна диспетчера сетей метро, которая автоматически открывается
  3. Выполните команду еще раз, react-native run-android