Интеграция с Android — React Native — ошибка типа: сбой сетевого запроса

#android #react-native

#Android #react-native

Вопрос:

В настоящее время я имею в виду следующее руководство: https://reactnative.dev/docs/integration-with-existing-apps и я могу заставить свою интеграцию работать, используя локальный сервер с запуском Yarn.

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

Исходная команда:

 $ npx react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/com/your-company-name/app-package-name/src/main/assets/index.android.bundle --assets-dest android/com/your-company-name/app-package-name/src/main/res/
 

Измененная команда:

 npx 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/
 

Когда я создаю подписанный apk с вариантом выпуска и устанавливаю его на свой телефон. Я запускаю приложение и вижу ошибки в моем logcat из React Native, говорящие:

Ошибка типа: сбой сетевого запроса

Может кто-нибудь, пожалуйста, предоставить некоторую информацию о том, почему это происходит? Модуль react native загружается нормально, просто сетевые запросы, которые он выполняет, получают указанную выше ошибку.

Еще немного информации о разделах кода, которые я использовал в файлах:

build.gradle:

 project.ext.react = [
    entryFile: "index.js",
    bundleAssetName: "index.android.bundle",
    bundleInDebug: true,
    bundleInRelease: true,
    enableHermes: false,  // clean and rebuild if changing
 ]
 

AndroidManifest

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

Комментарии:

1. Удалите все папки отладки из вашей папки Android .. если это не работает, проверьте свой URL, включен ли SSL. Вы можете перейти по этой ссылке

2. как выглядит ваша конечная точка локального хоста? возможно, вам придется попробовать http://10.0.2.2:[port] вместо localhost

3. Я все же готовлюсь к выпуску? Он работает локально. Даже после успешной сборки моего приложения для выпуска после выполнения следующих действий здесь: reactnative.dev/ docs/signed-apk-android я все еще получаю сбой сетевого запроса хммм @kenmistry

4. Я все же готовлюсь к выпуску? будет ли конечная точка сервера отличаться? что вы упомянули об этом, а не ответ на вашу конечную точку? кроме того, правильно ли я понимаю вашу проблему, в которой вы используете сборку своего выпуска со своего физического мобильного устройства, Android, для подключения к вашему local server with yarn start и сталкиваетесь с проблемой сети?

5. Хммм. Извините, если это глупый вопрос, но я на самом деле не уверен. Ранее вы упоминали, какой была моя конечная точка локального хоста, я не уверен, что это такое или как это проверить. Это параметр внутри приложения react? Но да, вы почти правы. Я подумал, что если я создам релиз, мне больше не понадобится локальный сервер? Я пытался использовать его на своем физическом телефоне Android без необходимости подключения к ноутбуку по USB и полагаться на запуск yarn @kenmistry

Ответ №1:

Я разобрался с проблемой: когда я активирую режим отладки, отладчику react native каким-то образом удается соединить VPN с моего MacBook, и поэтому мои запросы сработали. Я забыл, что для этих запросов требуется VPN.

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

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

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