React Native找不到集成现有android应用程序的开发服务器
我正在尝试将现有的android应用程序与React Native集成,如下所示。它编译并运行,但当我启动React活动时,它会崩溃: 原因:java.lang.RuntimeException:无法连接到 开发服务器 我已经在模拟器(genymotion)和usb连接设备上进行了尝试。我已经运行了React Native找不到集成现有android应用程序的开发服务器,android,react-native,genymotion,usb-debugging,Android,React Native,Genymotion,Usb Debugging,我正在尝试将现有的android应用程序与React Native集成,如下所示。它编译并运行,但当我启动React活动时,它会崩溃: 原因:java.lang.RuntimeException:无法连接到 开发服务器 我已经在模拟器(genymotion)和usb连接设备上进行了尝试。我已经运行了adb-reverse-tcp:8081-tcp:8081,并用adb-reverse-list进行了验证,此外,我还验证了我可以从设备上的浏览器以及笔记本电脑上进行访问(因此包服务器可以通过npm-
adb-reverse-tcp:8081-tcp:8081
,并用adb-reverse-list
进行了验证,此外,我还验证了我可以从设备上的浏览器以及笔记本电脑上进行访问(因此包服务器可以通过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客户端可以看到packager服务器,在以正常方式(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\u modules/react native/package.json
中列出的特定版本)