При попытке создать проект, поддерживающий реакцию на Android 4.4.2, я получаю этот экран с ошибкой

said error

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

Zygro

Ответов: 33

Ответы (33)

Возможным решением для этого является то, что вы, скорее всего, не связываете свое приложение сначала, выполните следующие шаги, а затем разверните свой app-debug.apk на своем устройстве

$ cd myproject  
$ react-native start > /dev/null 2>&1 &  
$ curl "http://localhost:8081/index.android.bundle?platform=android" -o "android/app/src/main/assets/index.android.bundle"

(если папка assets не существует, создайте ее)

Затем запустить из корня проекта

$> (cd android/ && ./gradlew assembleDebug)

установить созданный apk на ваше устройство из местоположения: android / app / build / output / apk / app-debug.apk

дайте мне знать, решит ли это вашу проблему

ИЗМЕНИТЬ:

Вы можете просто поместить его в свой package.json в качестве сценария для его автоматизации, я считаю, что он будет исправлен в следующих выпусках response-native и будет выполняться перед сборкой финального APK, поэтому в этом нет необходимости (Я тоже надеюсь)

поставить:

"scripts": {
    "build": "(cd android/ && ./gradlew assembleDebug)",
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "bundle-android": "react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --sourcemap-output android/app/src/main/assets/index.android.map --assets-dest android/app/src/main/res/"
  },

или, как уже упоминалось, эквивалент curl, но для большинства случаев вышеупомянутый более надежен

Если ни одно из решений у вас не работает, попробуйте следующее:

Я обнаружил, что моя / android / app / build / intermediate / assets / debug папка пуста, и при запуске cd android && ./gradlew buildDebug не создается те файлы, которые требуются, которые позже используются потоком javascript в наших собственных приложениях для реагирования.

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

node node_modules/react-native/local-cli/cli.js bundle --platform android --dev true --reset-cache --entry-file index.android.js --bundle-output //android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest //android/app/build/intermediates/res/merged/debug

После выполнения этих команд я обнаружил в этом каталоге два файла пакета / android / app / build / intermediate / assets / debug

И затем я снова запустил cd android && ./gradlew installDebug мое приложение снова начало работать.

Будет отлаживать больше и обновлять то, что на самом деле дает сбой.

У меня такое же исключение было на устройстве Z3 Compact D5803 - 6.0.1

Я открыл файл .buckconfig и изменил строку:

target = Google Inc.:Google API: 23

От

до

target = Google Inc.:Google API: 24

Потому что я видел в SDK Manager, что Android 6.X имеет уровень API 24.

  1. перезапустить genymotion
  2. запустить реагировать на родной запуск-android
  3. проблема решена

Попробуйте эту команду в терминале, а затем перезагрузите. У меня сработало

ADB обратный TCP: 8081 TCP: 8081

Поскольку вы используете Android <5.0, вы не можете использовать метод adb reverse по умолчанию, но Facebook добавил официальную документацию для подключения к серверу разработки через Wi-Fi, который поддерживал бы вашу версию. Цитирую инструкции для MacOS, но они есть и для Linux и Windows:

Метод 2: Подключение через Wi-Fi

Вы также можете подключиться к серверу разработки по Wi-Fi. Сначала вам нужно установить приложение на свое устройство с помощью USB-кабеля, но как только это будет сделано, вы сможете выполнять отладку по беспроводной сети, следуя этим инструкциям. Прежде чем продолжить, вам понадобится текущий IP-адрес вашей машины разработки.

Вы можете найти IP-адрес в Системных настройках → Сеть.

Убедитесь, что ваш ноутбук и телефон находятся в одной сети Wi-Fi. Откройте приложение React Native на своем устройстве. Вы увидите красный экран с ошибкой. Хорошо. Следующие шаги исправят это. Откройте меню разработчика в приложении. Перейдите в Dev Settings → Debug server host for device. Введите IP-адрес вашего компьютера и порт локального сервера разработки (например, 10.0.1.1:8081). Вернитесь в меню разработчика и выберите Reload JS.

Я получил это также, когда впервые начал работать с React Native, используя физическое устройство. Если это так, вам нужно сделать несколько дополнительных вещей, прежде чем вы сможете начать. Вы должны ввести некоторую информацию о вашей машине разработки в «Dev Settings» React Native.

Когда вы видите ошибку, встряхните свой девайс. Появится диалоговое окно, последним вариантом будет «Настройки разработчика». Выберите «Отладка сервера и порт для устройства» и введите свой локальный IP-адрес и используемый порт (обычно 8081).

См. Последний абзац https://facebook.github.io/react-native/docs/running-on-device-android.html

см. выпуск:

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

2. нажмите Reload (R, R) на вашем устройстве.

В отдельном терминале подключите устройство к компьютеру и выполните следующие команды:

react-native start 
cd user/Library/Android/sdk/platform-tools/
./adb reverse tcp:8081 tcp:8081

Приложение Терминал:

react-native run-android 
install apk on your device from this location android/app/build/outputs/apk/app-debug.apk

Я обнаружил, что мне нужно также добавить

апгрейд с собственной реакцией

, чтобы приложение работало правильно.

Мои пути:

react-native start

После этого в вашем устройстве введите:

click to Reload.

См. В консоли response-native, он будет получать данные пакета js.

У него была эта проблема «случайно», и мне потребовалось время, чтобы понять, что не так в моем сценарии.

После того, как я обновился до React-native-cli 2.0.1, в журнал появилось сообщение, которое помогло мне покопаться и найти основную причину:

JS-сервер не распознается, продолжается сборка ...

Изучив несколько ссылок, я нашел эту:

Невозможно распознать JS-сервер

Так как я работаю в Windows, я запустил netstat и обнаружил, что мой VLC-плеер также работал на порте 8081, вызывая проблему. Итак, в моем случае, если бы я запустил сервер vlc до сервера, поддерживающего реакцию, он бы не работал.

Это же сообщение журнала не выводилось в предыдущих версиях response-native-cli, что приводило к сбою без уведомления.

TL, DR: проверьте, работает ли что-нибудь на том же порту, что и менеджер пакетов (по умолчанию 8081)

"npm start"

Я просто закрыл терминал и открываю новый. Пошел к месту проекта командой cd. А затем просто введите - «npm start». а затем "r" для перезагрузки. Все просто исчезло. Думаю, всем стоит попробовать это сразу.

Попробуй очистить кеш

запуск реагирования-native --reset-cache

кто-то предложил следующий

реагировать-родной run-android реагировать-native start --reset-cache,

Но в моем случае я просто закрыл окно командной строки cli и использовал следующее.

npx react-native run-android

и все работало нормально.

Я тоже получал эту ошибку, очень запутался. Потому что все ответы не работают. Сразу после добавления adb к path.

Для меня это потому, что adb не было в PATH. Он находится в / Users / man / Library / Android / sdk / platform-tools для меня, он может быть где-то еще для вас, но в любом случае найдите его и добавьте в свой путь, чтобы узнать, поможет ли это.

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

В моем случае это был jsEngine: 'hermes' в подразделе android, удаление которого исправило производственную сборку.

Если вы используете expo и запускаете его на физическом устройстве, я бы посоветовал убить сборщик метро, ​​затем запустить expo и попробовать

Только что получил эту ошибку. Вот что я сделал, чтобы исправить: Я выбрал Dismiss, зашел в меню разработчика, затем Dev Settings, Выберите Хост и порт сервера отладки для устройства, я добавил IP-адрес своих компьютеров и порт: 192.168.0.xx: 8xxx, используйте любой IP-адрес, назначенный вашим машинам разработчика, на вашем сеть Wi-Fi. Порт обычно : 8081

Как только я это сделал, все прошло хорошо. Кроме того, пока вы находитесь в меню разработчика, не забудьте выбрать Enable Live Reload и Debug JS Remotely, это значительно облегчит вашу жизнь при отладке.

В итоге мне пришлось открыть порт, который я использовал (по умолчанию 8081). В Linux вы можете сделать следующее

sudo iptables -A INPUT -p tcp --dport 8081 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 8081 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Вы можете проверить, действительно ли вам это нужно. Просто перейдите на свой сервер разработки в Chrome на своем устройстве Android. Если он не отвечает, возможно, это то, что вам нужно. Если ответит, то это вам не поможет.

Для меня проблема заключалась в том, что adb не распознавался - проверьте этот ответ.

Чтобы исправить это, добавьте C: \ Users \ USERNAME \ AppData \ Local \ Android \ sdk \ platform-tools в переменные среды

У меня такая же проблема, но это была моя глупая ошибка ...

Из Android studio, я запускал installDebug / installRelease gradle script из app projet вместо root projet.

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

react-native start

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

РЕДАКТИРОВАТЬ: если вы используете устройство Android через USB и отключили его или ваш компьютер перешел в спящий режим, вам, возможно, придется сначала запустить

adb reverse tcp:8081 tcp:8081

Слишком поздно, но у меня это действительно работает.

  1. реагировать-родной run-android.
  2. запуск реагирования на собственный.

Первая команда создаст apk для Android и развернет его на вашем устройстве, если оно подключено. Когда вы откроете приложение, он покажет красный экран с ошибкой. Затем запустите вторую команду, которая запустит упаковщик и соберет для вас пакет приложений.

Моя проблема заключалась в том, что я просмотрел свой файл AndroidManifest.xml и удалил строку

<использует-разрешение android: name = "android.permission.INTERNET" />

, потому что моему приложению не нужен интернет. Тем не менее, приложение реагирования на родную отладку действительно требует доступа в Интернет (для доступа к упаковщику). Упс. :)

Самый простой способ!

  • Остановить сервер и завершить сборку проекта.
  • Откройте терминал Node.js.
    • Перейдите в папку с проектом response-native.
    • Введите 'response-native start' - запуск собственного сервера реакции вручную.
  • Перейдите в свой терминал редактора кода и введите response-native run-android.

Готово!

Пожалуйста, проверьте, есть ли у вас следующая ошибка при запуске react-native run-android: версия сервера adb (XX) не соответствует этому клиенту (XX); убийство ...

В этом случае убедитесь, что / usr / local / opt / android-sdk / platform-tools / adb и / usr / local / bin / adb указывают на одно и то жеadb

В моем случае один был указан на / Users / sd / Library / Android / sdk / platform-tools / adb (Android SDK), а другой был указан на / usr / local / Caskroom / android-platform-tools / 26.0.2 / platform-tools / adb (Homebrew)

Проблема была исправлена ​​после того, как они оба указали на / Users / sd / Library / Android / sdk / platform-tools / adb (Android SDK)

Я пробовал многие из предложений выше / ниже, но в конечном итоге проблема, с которой я столкнулся, была связана с разрешениями с помощью watchman, которая была установлена ​​ранее с использованием homebrew. Если вы просматриваете сообщения своего терминала при попытке использовать эмулятор и сталкиваетесь с ошибкой «Permission denied» в отношении watchman вместе с этим сообщением «Could not get BatchedBridge» на вашем эмуляторе, сделайте следующее:

Перейдите в каталог / Users / / Library / LaunchAgents и измените настройки разрешений, чтобы ваш пользователь мог читать и писать. Это не зависит от того, есть ли у вас на самом деле файл com.github.facebook.watchman.plist.

У меня была такая же проблема. Когда я создал собственный проект реакции через create-react-native-app AwesomeProject, он хорошо работал в приложении Expo на телефоне. После этого я хотел использовать этот проект быстрого запуска для разработки своего проекта и получил ту же ошибку, что и вы.

После некоторого исследования я обнаружил, что лучше начать новый проект с response-native init AwesomeProject (со всеми настройками в собственных документах реакции) Затем запустите эту команду:

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/

Это должно исправить проблему с пакетом (--dev false не показывает предупреждений)

Все, что вам нужно сделать, чтобы приложение запустилось на вашем виртуальном / реальном устройстве, это:

react-native run-android

И он должен работать нормально. По крайней мере, у меня это сработало.

Это то, что у меня сработало (попробовав все другие найденные мной решения ...):

Запуск adb reverse tcp: 8081 tcp: 8081 внутри \ Android \ sdk \ platform-tools

Большинство из нас впервые сталкивается с этой проблемой, когда запускаем собственный проект №1.

Несколько простых шагов решили мою проблему:

Я создал образец проекта с помощью команды:

react-native init ReactProject1

Решение

Исправление должно помочь local-cli \ runAndroid \ adb.js найти adb.exe, так же, как local-cli \ runAndroid \ runAndroid. js:

найти оператор замены под именем проекта (что бы вы ни указали)\ node_modules \ react-native \ local-cli \ runAndroid

Заменить:

const devicesResult = child_process.execSync('adb devices');

По:

const devicesResult = child_process.execSync( (process.env.ANDROID_HOME ? process.env.ANDROID_HOME + '/platform-tools/' : '') + 'adb devices');

после выполнения вышеуказанной замены просто запустите response-native run-android в своем cmd, он объединит apk и сначала попытается установить пакет js локально на вашем устройстве. (Успешно)

2022 WebDevInsider