Я пытаюсь интегрировать существующее приложение для Android с React Native, следуя руководство. Он компилируется и запускается, но когда я запускаю активность React, происходит сбой:
Причина: java.lang.RuntimeException: не удалось подключиться к серверу разработки.
Я пробовал как в эмуляторе (genymotion), так и на устройстве, подключенном к USB. Я запустил adb reverse tcp:8081 tcp:8081
и проверил с помощью adb reverse --list
, а также подтвердил, что могу получить доступ к http://localhost:8081/index.android.bundle из браузера на устройстве, а также с моего ноутбука (поэтому сервер пакетов работает нормально, через npm start
).
Примечательно, что я могу нормально запустить учебный пример, поэтому, похоже, что-то вроде запуска RN из моего существующего приложения для Android.
Я на реактивной версии 0.27.2.
идеи?
Обновление: я добавил код для получения пакета непосредственно из одного из моих действий:
public void pingReactServer() {
Request request = new Request.Builder()
.url("http://10.0.3.2:8081/index.android.bundle")
.build();
OkHttpClient client = OkHttpClientProvider.getOkHttpClient();
client.newCall(request).enqueue(
new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.v(TAG, "React ping failed: " + call);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Log.v(TAG, "React ping response: " + response.body().string());
}
}
);
}
Это отлично работает, я возвращаю содержимое пакета. Таким образом, http-клиент React может видеть сервер упаковщика, и что-то еще должно вызывать ошибку при извлечении пакета обычным способом (DevServerHelper).