React-native: Не удалось подключиться к серверу разработки на эмуляторе Android и на реальном устройстве.

Созданный на 6 авг. 2017  ·  139Комментарии  ·  Источник: facebook/react-native

ПОЖАЛУЙСТА, НЕ УДАЛЯЙТЕ ЭТОТ ШАБЛОН, ПОКА НЕ ПРОЧИТАЕТЕ ПЕРВЫЙ РАЗДЕЛ.

Это отчет об ошибке?

Это проблема, с которой я сталкиваюсь при запуске обычного Awesome Project в моей системе.

Если вы ответили «Да»: мы ожидаем, что вам потребуется около 30 минут, чтобы подготовить высококачественный отчет об ошибке. Хотя это может показаться большим, внимательное отношение к проблемам помогает нам быстрее их устранять. Для отчетов об ошибках НЕОБХОДИМО заполнить оставшуюся часть этого шаблона, иначе проблема будет закрыта. Если вы ответили «Нет»: мы используем GitHub Issues исключительно для отслеживания ошибок в React Native. Если вам нужна помощь, на странице сообщества по адресу http://facebook.github.io/react-native/support.html перечислены различные ресурсы, которые помогут вам начать работу. Теперь пролистайте ниже!

Вы читали Руководство по содействию?

да

Окружающая обстановка

Пожалуйста, заполните все соответствующие поля, запустив эти команды в терминале.
  1. react-native -v : 0.47.1
  2. node -v :8.2.1
  3. npm -v :4.1.2
  4. yarn --version:

Затем укажите:

Действия по воспроизведению

(Напишите свои шаги здесь :)

1. Откройте командную строку в режиме администратора.
2.выполнить команду: компакт-диск
3.run команда: реактивная инициализация
4.выполнить команду: компакт-диск
5.run команда: реактивный запуск Android
это заставляет сервер пакетов автоматически запускаться на порту 8081. Но я не могу получить доступ к серверу пакетов из браузера на машине и мобильном телефоне.
Я пытался использовать http://:порт/index.android.js
http://локальный : порт
http://127.0.0.1 : порт

=> Я получал красный экран как на мобильном телефоне, так и на эмуляторе со следующим сообщением:
Я попытался запустить проект на реальном устройстве и на эмуляторе. На обоих я получил сообщение об ошибке: «Невозможно загрузить скрипт из ресурсов« index.android.bundle ». Убедитесь, что ваш пакет правильно упакован или вы используете сервер пакетов».

screenshot-1502041340496
screenshot-1502041361543
screenshot-1502041433294

при перезагрузке получаю ошибку: "Не удалось подключиться к серверу разработки".

Затем я установил номер хоста и порта в настройках разработки на обоих и получил ошибку «Не удалось подключиться к серверу разработки».

Ожидаемое поведение

Ожидается, что проект будет работать на эмуляторе и телефоне без каких-либо ошибок.

Но вместо этого я получил ошибку, и я пытался много раз, и я неоднократно получаю одну и ту же ошибку и по одному и тому же шаблону.

Воспроизводимая демонстрация

(Вставьте ссылку на пример проекта и точные инструкции, чтобы воспроизвести проблему.)

Ran Commands Locked

Самый полезный комментарий

Попробуйте запустить:
adb reverse tcp:8081 tcp:8081
в командной строке и после этого повторно запустите проект.

Все 139 Комментарий

Еще проблема с:
реагировать 16.0.0-альфа.6
РН 0.44.3
узел 8.2.1
нпм 5.3.0
XCode 8.3.3
Симулятор iOS 10.3

Так мне нужно работать на предыдущей версии этих?

Я встречаю это, и не могу справиться с этим....

что-то не так с последней версией?

Упаковщик работает? Вы должны увидеть его, когда запустите react-native run-android . Вы также можете запустить его самостоятельно, используя react-native start . Я хотел бы выяснить, не заключается ли проблема в том, что упаковщик вообще не запускается.

Да, упаковщик работает. Когда я запускаю команду react-native run-android, открывается окно узла js, в котором говорится, что упаковщик работает на 8081 и "Загрузка графика зависимостей. Готово"
Но когда я пробую « localhost:8081/index.android.js » в системном браузере, я вижу ошибку «Этот сайт недоступен».

Но когда я создаю обычный API-интерфейс nodejs и тестирую его в браузере, он успешно открывается.

У меня такая же проблема. Симулятор iOS работает нормально, кстати

Всякий раз, когда я пытаюсь создать новый проект в RN, каждый раз я натыкаюсь на стену новых ошибок.
Следующая попытка в следующем месяце снова, я думаю...

такая же проблема. кто-нибудь решит?

Попробуйте запустить:
adb reverse tcp:8081 tcp:8081
в командной строке и после этого повторно запустите проект.

@ashafizullah : я тоже это пробовал; но все равно не повезло.

Бывает и на моем устройстве.

У меня подключен usb, перевернут adb и запущен упаковщик.

При открытии следующей ссылки в браузере устройства пакет загружается успешно:

http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false

Поэтому я подозреваю, что в самом коде Java что-то не так.

есть ли решение по этому поводу? Я тоже застрял здесь. На IOS проект работает отлично

Я видел ту же проблему, и все потому, что приложение для Android не имеет этого разрешения:

<uses-permission android:name="android.permission.INTERNET" />

Поэтому убедитесь, что ваш код Android может получить доступ к удаленному URL-адресу из вашего приложения.

у меня такая же проблема неужели никто не может решить?

Я тоже столкнулся с такой же проблемой, если кто-нибудь найдет решение, пожалуйста, напишите. Спасибо.

у меня та же проблема, я делаю adb резерв tcp: 8081 tcp: 8081 , а затем проверяю один и тот же сетевой компьютер и мобильный, и я делаю настройки dev IP: 8081, но не могу подключиться к серверу разработки, кто решил эту проблему, большое спасибо ты

Привет люди. Я использовал console.dir() в режиме реагирования и получил такое поведение. И я думаю, что это нормально, потому что console.dir() - это функция browser.window, а браузер не имеет React-Native. После удаления console.dir() мое приложение заработало.

Я столкнулся с той же проблемой на Mac, есть новости?

у меня такая же проблема в тесте устройства.

Андроид 4.1.2

Привет. Ребята, у кого версия андроида ниже 5.0, пробовали ли вы использовать подключение по вайфаю вместо usb? Мое приложение нормально запускается на Android 4.3 (Huawei mediapad T1 8.0) после подключения через Wi-Fi.

была эта проблема, для меня это оказался порт 8081, который использовался postgresSQL

У меня такая же проблема сегодня.
Андроид 4.4.2 и 6.

Та же проблема и здесь. Происходит каждый раз, когда я снова открываю свой Mac после короткого времени сна. Кто-нибудь решил это?
adb reverse tcp:8081 tcp:8081 - мне это не подходит

screen shot 2017-10-17 at 8 20 03 am

Моя ошибка была устранена путем изменения ограничений inotify.
Эта ссылка помогла https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers

такая же проблема, помогите

У меня также возникла такая же проблема, когда я пытаюсь запустить его с локального хоста. Работает в браузере и на эмуляторе, но не на физическом устройстве

Та же проблема здесь для Android, как с устройства, так и с эмулятора. Не могу подключиться к упаковщику. Выполнение "adb reverse..." для физического устройства. Также работает на пользовательском порту, поэтому выполняется «реагирование на родной старт --port 8088», а затем устанавливается IP- адрес: 8088 в настройках dev в приложении.

ВОПРОС: Есть ли способ найти неисправность между приложением (на моем устройстве Android) и упаковщиком, работающим на ПК с Windows?

Это все, что я вижу, это индикация ошибки типа «не удается подключиться» и не замечать сообщений журнала в упаковщике. \

ОБНОВЛЕНИЕ: запуск «adb reverse --list» показал, что у меня есть две обратные записи. Кажется, после того, как я исправил это, все заработало. У меня все еще есть только «белая страница», но я думаю, что это другая проблема.

Та же проблема с Android, iOS работает...

как это может случиться
я тоже столкнулся с той же проблемой,
а раньше у меня все нормально работало
затем я получаю бесконечный цикл, из-за которого мой рабочий стол сильно тормозит.
поэтому я решил закрыть эмулятор и сборщик метро, ​​которые я получаю от реактивного запуска
я попробовал этот код ниже, но не повезло
react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

Столкнулся с той же проблемой и потратил пару дней на это. Оказывается, порт 8081 по умолчанию был заблокирован на моей машине. Изменил порт в соответствии с инструкциями здесь https://github.com/facebook/react-native/issues/10715 , и теперь он работает.

Ребята, вы можете попробовать открыть этот URL-адрес в веб-браузере устройства?

http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false

@kevinresol , если менеджер пакетов говорит, что он запущен на порту 8081, и вы не можете получить к нему доступ из браузера, то, скорее всего, порт заблокирован вашим брандмауэром. Просто попробуйте изменить порт по умолчанию или посмотрите, сможете ли вы открыть порт.

Как упоминалось в моем предыдущем посте , я могу получить доступ к бандлу через браузер устройства.

У меня та же проблема, что и у @kevinresol. Я вижу пакет в браузере, но ошибка сохраняется. Я на эмуляторе, но я все еще пробовал adb reverse, но не повезло.

@ bruno02100 bruno02100 , если вы работаете в Windows и подключаетесь через Wi-Fi, попробуйте отключить брандмауэр. Посмотрите, решит ли это проблему.

@jerrykurian Я на Mac с эмулятором Android. Мой брандмауэр уже отключен. Это действительно странно.

После настройки Debug server host & port for device на 192.168.x.x:8081 в Dev Settings (акулируйте телефон, появится всплывающее меню)
это работа для меня

PS: НЕ нужно создавать какой-либо пакет вручную, он будет автоматически создан при успешном подключении.

Я думаю, что любая проблема с Wi-Fi или решение Wi-Fi не по теме. ОП говорил о подключении к localhost через USB с adb reverse

Я заметил, что эта ошибка возникает только после того, как эмулятор некоторое время работает. Поэтому на данный момент каждый раз, когда появляется эта ошибка, я просто перезапускаю свой эмулятор и запускаю react-native run-android. Это действительно раздражает, но у меня не так много времени, чтобы разобраться в этом, так что придется это сделать.

Я могу подключиться к серверу разработки после сборки через студии Android, но если я обновляю код при редактировании кода, мое устройство или эмулятор не могут подключиться к серверу.

Мои зависимости
«реагировать»: «16.0.0»,
"реагировать-родной": "0.50.4",

Я могу подтвердить, что решение @xlebenny по ручной настройке хоста и порта сервера отладки на устройстве сработало для меня в только что извлеченном проекте CRNA.

Шаг за шагом, чтобы извлечь и запустить CRNA на Android

В терминале:

  1. create-react-native-app myApp
  2. cd myApp
  3. yarn run eject (я использовал параметры по умолчанию «обычный проект React Native»)
  4. react-native run-android

(теперь приложение должно быть скомпилировано и установлено на телефон)

На телефоне:

  1. запустите приложение (ожидайте увидеть красный экран ошибки! - нажмите кнопку «Отклонить» в левом нижнем углу)
  2. Встряхните телефон и выберите « Настройки разработчика».
  3. Выберите хост и порт сервера отладки для устройства и установите значение 192.168.xx:8081 (конечно, сделайте его фактическим IP-адресом локальной сети)
  4. Перезапустите приложение на телефоне, и вверху должна появиться зеленая полоса «Загрузка с 192.168.xx:8081…».
  5. Вы также должны увидеть какое-то действие «Объединение index.js » в Metro Bundler (которое открывается при запуске react-native run-android )
  6. После завершения сборки приложение должно быть запущено на вашем Android-устройстве!

Живая перезагрузка (при изменении исходных файлов) по-прежнему возможна — просто встряхните телефон и коснитесь «Включить живую перезагрузку».

@ashafizullah , не могли бы вы объяснить, как эта команда решила проблему. Благодарность

@ plong0 решил это для меня!

Как указывает @bruno02100 , кажется, что эта ошибка возникает, если устройство открыто в течение длительного периода времени. Отключение быстрой загрузки в настройках эмулятора решило эту проблему для меня 👍

Введите adb shell и посмотрите, прослушивает ли он ваш локальный сервер? настройте IP-адрес и порт сервера в настройках разработчика. Это должно исправить это.

@ plong0 спасибо за помощь, но мне это не помогло.
Я не могу запустить свое приложение на устройстве Android с помощью MAC.

@ramintagizade - как мне проверить, слушает ли приложение мой локальный сервер? какая команда:
adb shell [command] ?

Да, adb shell и netstat.

на основе этого http://facebook.github.io/react-native/docs/running-on-device.html

получить доступ к вашему локальному IP-адресу (например: http://192.168.43.188:8081/) из браузера и убедиться, что он отображается

Упаковщик React Native запущен.
Посмотреть документацию

затем перейдите к настройкам разработчика в вашем эмуляторе:
dev-settings

Для пользователей Mac вы можете выполнить следующие шаги:
Шаг 1: запустите «adb reverse tcp:8081 tcp:8081 »
Шаг 2: Нажмите «команда m»
Шаг 3: Нажмите «Настройки разработчика».
Шаг 4: Нажмите «Отладить хост-сервер и порт для устройства».
Шаг 5: Во всплывающем окне введите «10.0.2.2:${port_id}» в разделе «port_id», используя порт, на котором запущено ваше приложение.
Шаг 6: Теперь запустите «react-native run-android».

если вы пытаетесь отладить приложение на своем физическом устройстве Android через Wi-Fi с помощью компьютера с Windows, возможно, устройство не сможет получить доступ к порту вашего ПК или ноутбука,
вы должны сделать порт доступным. это включает в себя два шага:

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

```
открыть диалог запуска
-тип wf.msc
-нажмите на входящие правила
-нажмите новое правило справа
-выберите порт из всплывающего меню и нажмите «Далее»
-выберите порт tcp и определенные локальные порты и введите номер порта, например 8081 (по умолчанию)
-разрешить подключение
-выбрать все в разделе профиля
- дать какое-то подходящее имя и описание
-нажмите "Готово"

  1. Вы должны сделать свой компьютер доступным снаружи, для этого выполните следующие действия:
    - открыть сеть и центр обмена с панели управления
    -смените настройки адаптера
    -выберите свою сеть Wi-Fi
    -правый клик, свойства
    -нажмите на вкладку обмена
    - поставить все галочки

Все готово, теперь попробуйте запустить react-native run-android.

Была аналогичная проблема, хотя позже я понял, что мое эмулируемое устройство (андроид) вообще не имело подключения к Интернету (или сети). У него вообще не было символа WiFi или LTE. Перезапуск эмулятора не решил проблему, но перевел его в режим плоскости и снова выключил режим плоскости. В моем случае это может быть общая ошибка Android, связанная с потерей сетевого подключения.

Мы столкнулись с этой проблемой. Чтобы исправить это, ниже приведено очень простое решение.

  1. Отмените текущий процесс «react-native run-android» с помощью CTRL + C.
    или СМД+С
  2. Закрыть открывшуюся командную строку окна Metro Packager
    автоматически.
  3. Снова запустите команду «react-native run-android».

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

Нажмите здесь, чтобы узнать больше

Не уверен, что вызвало мою проблему с эмуляторами Android на macOS. Возможно, установка новых Android AVD или установка различных обновлений Android Studio?

Эта команда висела:
watchman watch-del-all

Это решило проблему для меня:
````
варить деинсталлировать сторож
варить установить сторож

И просто чтобы сторож удалить не завис

сторож
````

Я мог бы решить эту проблему, наконец, перезапустив эмулятор.

Наконец-то я нашел свою проблему.
В моем случае это было для настройки прокси-сервера эмулятора.
Просто зайдите в настройки эмулятора и не устанавливайте прокси.

Надеюсь, это может помочь

Всем привет,
Я обнаружил ту же проблему при работе в среде Windows и моделировании с помощью симулятора Android.
После некоторых проб и ошибок я нашел решение, как показано ниже:

1 >> Измените порт в «node_modules\react-native\local-cliserverserver.js» по умолчанию:

process.env.RCT_METRO_PORT || 8081

к

по умолчанию: process.env.RCT_METRO_PORT || 9088

если порт заблокирован или выдан какому-то другому приложению.
Примечание . Вы можете выбрать любой номер порта, я выбрал 9088.
2 >> Запустите команду react-native run-android --port 9088 (укажите здесь номер своего порта). Этот порт должен быть отправлен в запущенный adb, так что и сервер, и adb должны быть на одном и том же порту.
3 >> Теперь в симуляторе студии Android нажмите Ctrl + m, чтобы перейти к « Настройке разработчика», затем выберите порт и хост сервера отладки для устройства , установите « localhost: 9088 ».
4 >> Откройте консоль разработчика в Chrome, используя URL-адрес http://localhost : 9088/debugger-ui/

Теперь он начнет загружать изменения, которые вы вносите в свое приложение.

Наслаждайтесь кодированием сейчас :)

Спасибо, что опубликовали это! Похоже, вы не используете последнюю версию React Native v0.53.0, выпущенную в январе 2018 года. Можете ли вы убедиться, что эта проблема все еще может быть воспроизведена в последней версии?

Я собираюсь закрыть это, но, пожалуйста, не стесняйтесь открывать новую проблему, если вы можете подтвердить, что это все еще проблема в версии 0.53.0 или новее.

Как внести свой вкладЧто ожидать от сопровождающих

Да, я использую «реагировать-нативный»: «0.53.0».

Но эта проблема возникла, когда я использовал внутренний корпоративный прокси. Возможно, некоторые порты заблокированы или используются корпорацией. Поэтому я использовал этот способ решения. И разместил здесь, чтобы другие могли решить эту проблему.

Та же проблема на реальном устройстве Android. Версия 5.1.1

Просто откройте командную строку и перейдите в каталог проекта, просто введите «yarn» и нажмите Enter, все будет в порядке.

@ashafizullah его решение работает!!!!

Будь то симулятор или реальное устройство для Android, просто сделайте следующее:
image

@Alijaaan та же проблема, что и у меня, по-видимому. Спасибо!

Единственное решение, которое я нашел, это удалить из студии Android AVD Manager ваш текущий эмулятор и добавить новый. Все снова начинают работать.

Большое спасибо @Alijaaan
Он использовал настройку прокси-сервера Android Studio.
image
Я снял флажок «использовать настройку прокси-сервера Android Studio», а затем выбрал «Без прокси». Уже все хорошо.

Комментарий @esutton решил мою проблему.

Кстати, watchman — моя любимая программа. Я всегда был рад приостановить свой день на несколько часов, чтобы отследить случайные проблемы RN и понять, что все, что мне нужно сделать, это запустить watchman watch-del-all . Теперь даже эта команда зависает, и нам приходится время от времени переустанавливать ее, я стал еще более счастливым разработчиком.

у меня сработал реактивный run-android --port 9088. Спасибо @Louies89

я нахожу решение
1.отключи антивирус
2закройте мой брандмауэр

я думаю, что это проблема с недавними изменениями в коде, особенно если вы используете стороннюю библиотеку, такую ​​​​как нативная база. что я сделал, переместился на несколько шагов назад Ctrl + z , удалил приложение из эмулятора и перезапустил его. потом реагировать-натив-запустить-андроид и все работает! может это как-то связано с кешированием эмулятора

@pinchez254 согласен с вами. Первый запуск всегда в порядке.

Пожалуйста, запустите сервер npm с помощью команды npm start

Здравствуйте, я указал IP-адрес своего компьютера в настройках разработчика (192.168.1.103:8081) и создал входящее правило в брандмауэре для доступа к tcp-порту 8081, но получаю эту ошибку:
"could not connect to development serve"
ТАКЖЕ
при вводе в браузере "http://localhost:8081/index.delta?platform=android&dev=true&minify=false" сборка началась и успешно завершилась!

Для меня работает:

  1. adb reverse tcp:8081 tcp:8081
  2. react-native start --reset-cache
  3. react-native run-android

сделал свое дело

Пришлось открыть два терминала.
Первый забег
sudo npm start
После запуска
react-native run-ios

  1. Убедитесь, что ваш ноутбук и телефон находятся в одной сети Wi-Fi.
  2. Перейдите в папку вашего проекта через оболочку. Затем запустите react-native run-android , react-native start --port=8088
  3. Откройте приложение React Native на своем устройстве.
  4. Откройте меню разработчика в приложении. Нажмите [cmd] + [M] ([Ctrl] + [M] для окон)]
  5. Перейдите в «Настройки разработчика» → «Отладка хост-сервера» для устройства.
  6. Введите IP-адрес вашего компьютера и порт локального сервера разработки (например, 192.168.1.100:8088).
  7. Вернитесь в меню «Разработчик» и выберите «Перезагрузить JS».

react-native run-android --port=8081 :)

Единственный способ, которым мне удалось это решить, - это поиск всех ссылок на порт 8081 и изменение на 9088 (неиспользуемый) и начало с -- порта 9088. Также изменена настройка Dev на порт 9088. Было несколько ссылок на порт 8081 по умолчанию в node_module/react-native dir. Порт 8081 использовался защитой от вирусов в моей среде.

Для меня инструменты платформы Android не были установлены. Поэтому я установил с помощью следующей команды.
варить бочку установить android-platform-tools

После этого запуск из Android-студии или командной строки с помощью * response-native run android * работал

Перезагрузка моего Mac решила эту проблему для меня, понятия не имею, почему

во-первых, убедившись, что вы находитесь в своем файле проекта, мне помогает это решение:
react-native start
скорее всего вы получите ошибку с кодом ENOSPC
в этом случае используйте этот код:
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
после этого вы снова запустите react-native start , и, скорее всего, ваша ошибка ENOSPC будет устранена.
затем просто запустите react-native run-android
вот, у меня это работает в Linux с эмулятором Android от Android Studio

У меня была эта ошибка,
Я нашел решение, сделав это.
сначала я удалил все модули узлов.
sudo rm -rf node_modules/
затем я снова установил пакеты npm
npm install

затем я запускаю эту команду для проверки того, что реагирующие пакеты в порядке.

react-native start

он показывает мне, что с пакетами все в порядке, а затем я запускаю андроид с правами root

react-native run-android --root

затем я обнаружил, что это работает.

Также обратите внимание, что начиная с Android 9 передача открытого текста HTTP (не HTTPS) по умолчанию запрещена. Чтобы разрешить подключение к серверу разработки с устройства, на котором запущено ваше приложение, добавьте этот атрибут в элемент application в файле _AndroidManifest.xml_:

android:usesCleartextTraffic="true"

Дополнительная информация об этой проблеме Stackoverflow

Вы можете проверить, может ли ваше устройство получить доступ к серверу разработки, введя URL-адреса в собственном веб-браузере.

К сожалению, нативные инструменты разработки реакции поглощают причину ошибки, но она появляется, если вы пытаетесь установить собственное HTTP-соединение внутри целевого приложения, где вы получите полезную трассировку стека.

@delj К сожалению, собственные инструменты разработки React поглощают причину ошибки.

Совет: используйте manifestPlaceholders , чтобы предотвратить выпуск с android:usesCleartextTraffic= "true"

AndroidManifest.xml
````
Android: имя = ".MainApplication"

android:usesCleartextTraffic="${isDebug}"
    >

````

Android/приложение/build.gradle

 типы сборки {
 отлаживать {
 manifestPlaceholders = [isDebug: true]
 }
 выпуск {
 manifestPlaceholders = [isDebug: false]

        minifyEnabled enableProguardInReleaseBuilds
        proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
        signingConfig signingConfigs.release
    }
}

У меня была такая же проблема, и то, что сработало для меня в Windows 10, буквально просто открыло CMD от имени администратора.

у меня все еще есть эта проблема. Можем ли мы открыть эту резервную копию. Это совершенно нелепо, как это учебник «Начало работы», если вы выполняете все шаги до буквы, а он не запускается. Я буквально потратил часы на эту ошибку. Facebook должен решить эту проблему. Либо их руководство просто НЕПРАВИЛЬНО, либо хорошо известные случаи устранения неполадок, на которые они могут ссылаться.

Вот мои шаги:

  1. терминал 1: adb обратный tcp: 8081 tcp: 8081
  2. терминал 1: запуск npm
  3. реакция-родной запуск-андроид

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

Я полностью сочувствую - мы только что потратили час на исправление этого.

Это работает для симулятора, и я думаю, что тот же подход должен работать и для вашего устройства.

Здесь возникает несколько проблем, наиболее важной из которых является настройка открытого текста. Прежде чем что-либо делать, обновите приложение до последней версии Android SDK, иначе эти настройки не будут работать. Чтобы проверить, есть ли у вас эта проблема, вставьте этот код в одну из ваших самых верхних функций рендеринга. Например, <App

fetch('http://jofarnold.com')
  .then(res => res.text())
  .then(d => alert('ok'))
  .catch(e => {
    console.error(String(e));
});

Обратите внимание на http , а не на https . Да, мой сайт не http. Но сейчас я ни о чем не жалею!

Теперь попробуйте

fetch('https://httpbin.org')
  .then(res => res.text())
  .then(d => alert('ok'))
  .catch(e => {
    console.error(String(e));
});

Обратите внимание на http .

Какой из них терпит неудачу? Если оба не работают, у вас есть другие проблемы, и я не могу вам помочь, но попробуйте проверить, работают ли эти URL-адреса в Chrome в вашем симуляторе, чтобы исключить неработающую сеть. Если первый терпит неудачу (он даст ответный собственный красный ящик), но второй преуспевает (он будет предупреждать с помощью ok ), значит, вы неправильно настроили параметры безопасности Android. Итак, давайте сделаем это.

Сначала введите следующее в android/.../AndroidManifest.xml в разделе <application

<manifest
....
<application
... other settings
    android:usesCleartextTraffic="true"  <---------- this
    android:networkSecurityConfig="@xml/network_security_config" <------- and this
  >
   ... etc

Затем создайте файл в android/...res/xml/network_security_config.xml (вам может потребоваться добавить каталог xml: имя файла не является чем-то особенным - оно просто должно быть таким же, как в ссылке выше), как это :

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">jofarnold.com</domain>
    </domain-config>
</network-security-config>

Перекомпилируйте, убедившись, что вы делаете react-native start --reset-cache в одном терминале (учитывая reset-cache) и react-native run-android в другом.

Теперь вы загружаете приложение, вы получите всплывающее окно. Хорошая вещь! Вам удалось fetch моего небезопасного сайта.

Теперь нам нужно разобраться с родной реакцией. У меня сервер на 10.0.2.2 и отладчик на localhost или что-то в этом роде (не помню, пишу частично по памяти). В любом случае они разные, и поэтому это не работает.

Для этого измените jofarnold.com выше на localhost , а затем перейдите в меню настроек в приложении (cmd-M на Mac) > Настройки разработчика. Отключите «Использовать JS Deltas» (это не работает) и в разделе «Отладка» установите хост сервера и порт на localhost:8081

Ваш файл конфигурации безопасности должен выглядеть так:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">localhost</domain>
    </domain-config>
</network-security-config>

Перекомпилируйте, перезапустите react-native start --reset-cache , и вы увидите зеленую полосу в верхней части приложения с loading... или чем-то еще. В терминале вы должны увидеть его в комплекте с Delta, Map и так далее.

Я думаю, вам не нужно делать adb reverse . В любом случае это делается как часть скриптов RN.

Удачи!

Моя проблема заключалась в том, что мой эмулятор Android был отключен от Wi-Fi и данных. Я просто включил их, и он работает. Надеюсь, это поможет, если кто-то сталкивается с той же проблемой.

image

Моя проблема заключалась в том, что мой эмулятор Android был отключен от Wi-Fi и данных. Я просто включил их, и он работает. Надеюсь, это поможет, если кто-то сталкивается с той же проблемой.

Одна важная вещь, которую я должен добавить к комментарию Матео; если вы закроете свой MacBook и возобновите работу в другой сети Wi-Fi, это может привести к сбою «wifi» симулятора. Вы должны перезапустить симулятор. Я знаю, что это не проблема конкретно для симулятора, но у него хорошее SEO для этой темы, поэтому, надеюсь, оставление этого комментария здесь поможет кому-то еще.

решить с помощью Android 5.0 или выше, ошибка в Android 4..4

решить с помощью Android 5.0 или выше, ошибка в Android 4..4

Я согласен

Если вы используете эмулятор Android 9, вы должны добавить, как указано @delj , android:usesCleartextTraffic="true" в свой тег приложения в manifest.xml

Упаковщик работает? Вы должны увидеть его, когда запустите react-native run-android . Вы также можете запустить его самостоятельно, используя react-native start . Я хотел бы выяснить, не заключается ли проблема в том, что упаковщик вообще не запускается.

Почему возникает эта проблема?? У меня мак с ОС 10.13.6 и до запуска сервера автоматически

Спасибо @JofBigHealth , я сделал, как вы предложили, и это работает на эмуляторе и на реальном устройстве.
Но у меня проблемы с приложением, когда я загружаю его из альфа-канала. у вас есть предложения по его отладке?

@ шева007 шева007 Я не уверен, что вы подразумеваете под «альфа-каналом». Можете ли вы объяснить, а также включить более подробную информацию о том, какие проблемы у вас есть конкретно?

@JofBigHealth извините за недостающую информацию.
ОБНОВЛЕНИЕ: теперь все работает, мне просто пришлось немного подождать, пока Google Play не сделает обновленную рабочую версию доступной для тестеров. Большое тебе спасибо :)
моя первоначальная проблема заключалась в том, что приложение работает хорошо < Android 9, но оно не будет совершать сетевой вызов с Android 9, когда я использовал ваше решение, приложение, включая сетевые вызовы, работает должным образом.
но когда я отправил его на альфа-канал Google Play. он не делает сетевые вызовы.

реверсирование портов сработало для меня
по предложению @ashafizullah

Закрытие Android Studio, которое я открыл, странно решило проблему для меня. непонятно почему...

ОБНОВЛЕНИЕ: для симулятора с момента обновления до 0.57.7 я не нашел необходимости ни исправлять обратный прокси adb , ни менять порт в меню разработчика. По умолчанию это что-то вроде 10.0.1.1:8080 (догадываюсь по памяти) и Just Works. Я запускаю react-native start или react-native start --reset-cache (если требуется) и собираю из Android Studio, и все работает отлично. Если вы настроили его на отладку, у вас должен быть запущен отладчик, и вам может потребоваться повторная сборка из Android Studio, поскольку иногда он не подключается в первый раз (из-за того, что я подозреваю, это состояние гонки), но в остальном все в порядке. Просто не забудьте правильно установить параметры безопасности в манифесте приложения.

Устройство - другое дело.

Такая же проблема при попытке запуска на устройстве. Есть ли решение для устройства?

У меня такая же проблема. Пожалуйста помогите.

вы должны добавить путь в свои переменные среды... путь "adb", вы можете найти его местоположение в папке C:Users\user\AppData\Local\Android\Sdk/platformtools

Это сработало для меня в Windows 10: (после настройки хоста и порта отладочного сервера..)
Я проверил настройки своего брандмауэра (Брандмауэр Windows> Разрешить приложение или функцию через брандмауэр Windows) и обнаружил, что есть ДВА приложения Node.js, но одно из них не разрешено через брандмауэр! Поставил галочку и сохранил тогда все заработало как надо!

Если вы используете эмулятор Android 9, вы должны добавить, как указано @delj , android:usesCleartextTraffic="true" в свой тег приложения в manifest.xml

рекомендуемые

Та же ошибка.
виндовс7+андроид студия3.3.2.
Сервер узла активен, и я могу запустить 127.0.0.1 из симулятора Chrome, но приложение Awesome не может подключиться к серверу узла.
Я также добавил android:usesCleartextTraffic="true" в AndroidManisfesto.xml, но все равно получил ошибку

image
image
image
image
image
image
image
image

@aflext Вы запускали команду adb reverse tcp:8081 tcp:8081 в красном поле? Обычно это работает.

@JofBigHealth Решил проблему, изменив URL-адрес с 127.0.0.1:8081 на localhost:8081 .

В моем случае решением было отключить/включить «Удаленная отладка JS».

@ashafizullah : я тоже это пробовал; но все равно не повезло.

@ashafizullah да, со мной тоже не работает.

можно ли запустить этот проект через windows????

Моя ошибка была устранена путем изменения ограничений inotify.
Эта ссылка помогла https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers

ЭТО РАБОТАЕТ!! БОЛЬШОЕ СПАСИБО!!

Моя ошибка была устранена путем изменения ограничений inotify.
Эта ссылка помогла https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers

Это сработало для меня. Спасибо чувак.

Я добавил android:usesCleartextTraffic="true" к AndroidManifest.xml в теге <application ... и пересобрал приложение. После этого он начал нормально загружаться с dev-сервера.

Это происходило со мной, потому что у меня был запущен отладчик и подключен к другому устройству. Таким образом, симулятор iOS, подключенный к отладчику, блокировал подключение Android-устройства к упаковщику. Остановка удаленной отладки в симуляторе iOS позволила устройству Android подключиться, или вы также можете начать удаленную отладку на устройстве Android.

Это сработало для меня в Windows 10: (после настройки хоста и порта отладочного сервера..)
Я проверил настройки своего брандмауэра (Брандмауэр Windows> Разрешить приложение или функцию через брандмауэр Windows) и обнаружил, что есть ДВА приложения Node.js, но одно из них не разрешено через брандмауэр! Поставил галочку и сохранил тогда все заработало как надо!

Это была и моя проблема, спасибо!

Я решил с:

https://www.youtube.com/watch?v=XhiE0HEiYd4

https://stackoverflow.com/questions/44446523/unable-to-load-script-from-assets-index-android-bundle-on-windows

но.... когда я перезагружаю приложение в эмуляторе, снова происходит сбой и отображается сообщение:
НЕ МОЖЕТ ПОДКЛЮЧИТЬСЯ К СЕРВЕРУ РАЗРАБОТКИ

Итак, я попытался добавить node.js и genymotion player.exe в брандмауэр и перезапустить все (geny, реагировать) и снова работает...

ctrl+Win cmd командная строка ipconfig, чтобы найти мой адрес ipV4 192.168.0.111, после этого я вставил 192.168.0.111:8081 в
image
image

Успешно решено!

Я добавил android:usesCleartextTraffic="true" к AndroidManifest.xml в теге <application ... и пересобрал приложение. После этого он начал нормально загружаться с dev-сервера.

Это исправило это. Благодаря тонну.

Такая же проблема только на реальном устройстве Android.
Решение:
1) Добавьте файл android/app/src/main/res/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">localhost</domain>
    </domain-config>
</network-security-config>

2) Добавьте строку в android/app/src/main/AndroidManifest.xml

<application
    ...
    android:networkSecurityConfig="@xml/network_security_config"
    ...
>

Найдите лекарство.
Эта проблема помогла мне решить проблему, выполнив следующие действия.

  1. (в каталоге проекта) mkdir android/app/src/main/assets
  2. 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 /основной/рез
  3. реакция-родной запуск-андроид

https://stackoverflow.com/questions/44446523/unable-to-load-script-from-assets-index-android-bundle-on-windows

У меня это сработало после запуска adb reverse tcp:8081 tcp:8081 . Раньше открывалось окно сервера пакетов, но после загрузки графа зависимостей ничего не происходило. сообщение.
Теперь все работает нормально после выполнения вышеуказанной команды.

Это применимо к Android 9.0+ в соответствии с Конфигурацией сетевой безопасности .
Итак, перепробовав все возможные решения, которые я нашел в Интернете, я решил вручную исследовать собственный лог-код Android. Даже после добавления android:usesCleartextTraffic="true" я нашел это в логарифме:

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-адрес моего компьютера (проверьте ifconfig для Linux) — 192.168.29.96, я добавил указанную выше строку в *

Затем вам нужно очистить и пересобрать для Android!

cd <app-src>/android
./gradlew clean
cd <app-src>
react-native run-android

Я надеюсь, что это работает для вас.

Что я сделал: (работает на эмуляторе Android Pie 9)

  1. Установите IP и порт на Debug server host & port for device , нажав Ctrl+M и Dev Setting в эмуляторе. Убедитесь, что вы установили хост и порт, используя хост и порт Bundler (по умолчанию: localhost:8081 ) и убедитесь, что ваш порт не заблокирован другим процессом.
  2. Запустите adb reverse tcp:8081 tcp:8081 в домашнем каталоге проекта.
  3. Добавьте узел android:usesCleartextTraffic="true" к узлу <application> в AndroidManifest.xml
  4. После выполнения трех пунктов выше перезапустите проект.

@ Eyesonly88 это решило проблему для меня - спасибо.

Для вас, кто столкнулся с этой проблемой, особенно при настройке targetSdkVersion на API 28.

Все, что вам нужно сделать, это добавить в файл network_security_config следующие строки:

    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>

PS: В моем случае у меня есть несколько файлов network_security_config для каждого варианта, поскольку это проблема отладки, добавления этих строк в файл network_security_config в варианте отладки было достаточно.

================================================== =======================

Подробнее об ошибке ниже:

Если мы перейдем к https://developer.android.com/training/articles/security-config.html , мы увидим, что эти строки кода выше являются конфигурацией безопасности по умолчанию для Android API 24 до API 27. (Android 7.0 до андроид 8.1).
Это означает, что для Android 9, API 28, в котором я столкнулся с ошибкой, конфигурация по умолчанию изменилась.
В частности, конфигурация по умолчанию для Android API 28:

    <base-config cleartextTrafficPermitted="false">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>

.
Вот почему мне помогло использование конфигурации по умолчанию для старых API.

Другая вещь, которая также работала для меня в начале, заключалась в том, чтобы установить для targetSdkVersion значение API 27. Если вы не хотите работать с API 28, это может сработать и для вас.

Если вы используете эмулятор Android 9, вы должны добавить, как указано @delj , android:usesCleartextTraffic="true" в свой тег приложения в manifest.xml

рекомендуемые

вы сэкономили мое время. большое спасибо.

Ребята, я открыл Wi-Fi на эмуляторе, и у меня это сработало.

что решило мою проблему, так это использовать sudo yarn start вместо yarn start
У меня есть скрипт в моем package.json с

{
...
"scripts":{
"start":"react-native start"
}
....
}

Если вы используете эмулятор, такой как xCode или Android Studio, вам не нужно устанавливать адрес сервера разработки в настройках с вашим IP. Он установится автоматически. Просто удалите его и перезапустите приложение. Меня устраивает.

Если вы используете эмулятор Android 9, вы должны добавить, как указано @delj , android:usesCleartextTraffic="true" в свой тег приложения в manifest.xml

рекомендуемые

Вы спасли мой день

Что я сделал: (работает на эмуляторе Android Pie 9)

  1. Установите IP и порт на Debug server host & port for device , нажав Ctrl+M и Dev Setting в эмуляторе. Убедитесь, что вы установили хост и порт, используя хост и порт Bundler (по умолчанию: localhost:8081 ) и убедитесь, что ваш порт не заблокирован другим процессом.
  2. Запустите adb reverse tcp:8081 tcp:8081 в домашнем каталоге проекта.
  3. Добавьте узел android:usesCleartextTraffic="true" к узлу <application> в AndroidManifest.xml
  4. После выполнения трех пунктов выше перезапустите проект.

Я могу подтвердить, что решение @rafidamr является правильным. Но я был в корпоративной среде, где не мог использовать порт 8081, поэтому я просто переключил Metro Bundler на другой порт, например так:

  • adb reverse tcp:8088 tcp:8088
  • react-native run-android --port 8088

И, конечно же, указал на новый порт в настройках разработчика эмулятора.

Спасибо @camposbrunocampos 👏🏼 , я использовал target: Android 9.0 с API level 28 .
Обновил network_security_config.xml и теперь эмулятор работает нормально.

У меня были проблемы с запуском как на ios, так и на android (пробовал на android studio, без android studio, с xcode и без xcode). Пробовал все выше изложенное.

Итак, что НЕ помогло:

  • network_security_config.xml
  • адб реверс
  • изменение IP-адреса на IP-адрес сервера.
  • и т.д..

Единственное, что мне нужно было сделать, это выполнить: sudo npm start из родного каталога проекта. Похоже на проблему с разрешением. (используя Mac)

@inspiraluna , это основная проблема установки npm, вы должны указать свой системный каталог.

добавьте android:usesCleartextTraffic= "true" в ваше приложение в манифесте

....
android:usesCleartextTraffic="true"
android:theme="@style/AppTheme">

Меня устраивает.

Я добавил android:usesCleartextTraffic="true" к AndroidManifest.xml в теге <application ... и пересобрал приложение. После этого он начал нормально загружаться с dev-сервера.

Это решило проблему и для меня, но я предварю это, сказав, что сначала пробовал это исправление, и оно не сработало. Мне пришлось начинать заново с новыми эмуляторами, несколько раз убивать и перезапускать abd, переустанавливать студию Android, обновлять gradle и т. д.

@ Eyesonly88 Спасибо .. У меня работает
я добавил
android:usesCleartextTraffic= "true" для AndroidManifest.xml

К сожалению , я нацелен на Android 4.0, и когда я запускаю adb reverse tcp: 8081 tcp: 8081 , я получаю сообщение об ошибке

warn Failed to connect to development server using "adb reverse": Command failed: adb -s 192.168.66.103:5555 reverse tcp:8081 tcp:8081

Вот как я исправил проблему отсутствия инструментов разработчика в эмуляторе:
Этот ответ SO предлагает проверить ваш файл MainApplication.java и удалить BuildConfig.Debug из метода getUseDeveloperSupport , поэтому он выглядит так:

        <strong i="11">@Override</strong>
        public boolean getUseDeveloperSupport() {
            // Return true to load JS from the packager.
            // If BuildConfig.DEBUG is false, assets will be loaded from assets folder.
            return true; // BuildConfig.DEBUG;
        }
Была ли эта страница полезной?
0 / 5 - 0 рейтинги