ガイドに従って、既存の Android アプリを React Native と統合しようとしています。コンパイルして実行しますが、React アクティビティを起動すると、次のようにクラッシュします。
原因: java.lang.RuntimeException: 開発サーバーに接続できませんでした。
エミュレーター(genymotion)とUSB接続デバイスの両方で試しました。を実行adb reverse tcp:8081 tcp:8081
して検証し、ラップトップからだけでなく、デバイスのブラウザからhttp://localhost:8081/index.android.bundleadb reverse --list
にアクセスできることをさらに検証しました(したがって、パッケージサーバーは正常に動作しています。)。npm start
特に、チュートリアルの例を問題なく実行できるので、既存の Android アプリ内から RN を実行することについての何かのようです。
私は反応ネイティブ0.27.2を使用しています。
アイデア?
更新: アクティビティの 1 つからバンドルを直接取得するコードを追加しました。
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());
}
}
);
}
これで問題なく動作し、バンドル コンテンツが返されます。そのため、React の http クライアントはパッケージャー サーバーを認識でき、バンドルを通常の方法 (DevServerHelper) で取得する際にエラーが発生しているに違いありません。