[英]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.