Ошибка "Не удалось получить 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
Просто перезапустите свою систему или весь комплект, и проблема может быть решена.