繁体   English   中英

React Native无法找到开发服务器,集成了现有的Android应用

[英]React Native cannot find development server, integrating existing android app

我正在按照指南将现有的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 ,包服务器运行正常)。

值得注意的是,我可以很好地运行该示例示例,因此这似乎与在现有Android应用程序内部运行RN有关。

我正在使用本机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());
                }
            }
    );
}

效果很好,我得到了捆绑包的内容。 因此,React的http客户端可以看到打包程序服务器,并且在以正常方式(DevServerHelper)来获取捆绑包时,肯定有其他原因导致错误。

弄清楚了,这是一系列不幸的事件:

教程中的示例代码显示了这一点:

mReactInstanceManager = ReactInstanceManager.builder()
    ...
    .setUseDeveloperSupport(BuildConfig.DEBUG)

但是BuildConfig.DEBUG实际上定义为false ,因此这会禁用开发人员支持(相反,它希望将js捆绑查找为资产)。

解决此问题后,我遇到了另一个涉及Proguard的问题; 它去除了所有devsupport类,因此我需要使用以下命令在proguard配置中将它们列入白名单:

# Keep developer support classes.
-keep class com.facebook.react.devsupport.** { *; }

现在,我到了ReactInstanceManager加载并从开发服务器获取捆绑包,但是又遇到了一个speedbump:

错误:需要未知的模块“ react”。如果确定模块在那里,请尝试重新启动打包程序或运行“ npm install”。

不知道为什么npm install不会自动将其拉入,而是手动运行来修复它:

npm install react@15.1.0

(使用node_modules/react-native/package.json列出的特定版本。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM