Ошибка "Не удалось получить BatchedBridge, убедитесь, что ваш пакет правильно упакован" при запуске приложения

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

указанная ошибка

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

Ответ 1

Возможное решение для этого состоит в том, что вы, скорее всего, не будете сначала связывать свое приложение, выполните следующие шаги, а затем разверните приложение 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/outputs/apk/app-debug.apk

сообщите мне, исправляет ли ваша проблема

ИЗМЕНИТЬ

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

put:

"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/"
  },

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

Ответ 2

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

react-native start

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

EDIT: если вы используете устройство Android через USB и отключили его, или ваш компьютер переспал, вам, возможно, придется сначала запустить

adb reverse tcp:8081 tcp:8081

Ответ 3

Только что получил эту ошибку. Вот что я сделал, чтобы исправить: Я выбрал Dismiss, перешел в меню "Разработчик", затем Dev Settings, Выберите Debug server host & port for device, я добавил IP-адрес компьютера и порт: 192.168.0.xx:8xxx, используйте то, что назначил ваш компьютер, назначенный вашим IP-адресом, в вашей сети Wi-Fi. Обычно порт :8081

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

Ответ 4

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

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

Ответ 5

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

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

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

Ответ 6

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

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

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

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

После запуска этих команд я нашел два файла пакета в этом каталоге <root>/android/app/build/intermediates/assets/debug

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

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

Ответ 7

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

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

Ответ 8

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

adb reverse tcp: 8081 tcp: 8081

Ответ 9

см. выпуск:

1.реактивное начало

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

Ответ 10

  • перезапустить genymotion
  • run react-native run-android
  • проблема решена.

Ответ 11

Немного поздно, но это действительно работает для меня.

  • react-native run-android.
  • react-native start.

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

Ответ 12

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

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

target = Google Inc.:Google APIs:23

к

target = Google Inc.:Google APIs:24

Потому что я видел в SDK Manager, что Android 6.X имеет api level 24.

Ответ 13

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

Ответ 14

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

Способ 2. Подключение через Wi-Fi

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

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

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

Ответ 15

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

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

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

После изучения некоторых ссылок я нашел это:

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

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

Это же сообщение журнала не выводилось на предыдущие версии action-native-cli, заставляя его терпеть неудачу.

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

Ответ 16

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

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

потому что моему приложению не нужен интернет. Однако для реагирования на собственное приложение для отладки требуется доступ в Интернет (для доступа к пакету).:)

Ответ 17

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

Ответ 18

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

Ответ 19

Мне пришлось открыть порт, который я использовал (по умолчанию 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

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

Ответ 20

Мой путь:

react-native start

После этого на вашем устройстве, используя:

click to Reload.

Посмотрите на консоль response-native, это будет выборка js bundle data.

Ответ 21

Большинство из нас сталкиваются с этой проблемой впервые, когда мы начинаем реагировать на нативный проект # 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');

By:

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

после выполнения вышеупомянутой замены, просто запустите реагирующий нативный run-android в своем cmd, он установит пакет apk и сначала попытается установить пакет js локально на вашем устройстве. (Получил успех)

Ответ 22

У меня была та же проблема. Когда я создавал ответный собственный проект через 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

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

Ответ 23

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

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

Ответ 24

Проверьте, есть ли у вас ошибка при запуске react-native run-android: adb server version (XX) doesn't match this client (XX); killing...

В этом случае убедитесь, что /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)

Ответ 25

Я попробовал много предложений выше/ниже, но в конечном итоге проблема, с которой я столкнулась, - это разрешения с сторожем, который ранее был установлен с использованием homebrew. Если вы посмотрите на свои терминальные сообщения при попытке использовать эмулятор и столкнетесь с ошибками "Разрешения на отказ" в отношении сторожа вместе с сообщением "Не удалось получить BatchedBridge" на вашем эмуляторе, сделайте следующее:

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

Ответ 26

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

обновление на основе реакции

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

Ответ 27

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

реакция-native start - reset -cache

Ответ 28

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

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

Ответ 29

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

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

Тебе хорошо идти!

Ответ 30

Просто перезапустите свою систему или весь комплект, и проблема может быть решена.