Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React Native找不到集成现有android应用程序的开发服务器_Android_React Native_Genymotion_Usb Debugging - Fatal编程技术网

React Native找不到集成现有android应用程序的开发服务器

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-

我正在尝试将现有的android应用程序与React Native集成,如下所示。它编译并运行,但当我启动React活动时,它会崩溃:

原因:java.lang.RuntimeException:无法连接到 开发服务器

我已经在模拟器(genymotion)和usb连接设备上进行了尝试。我已经运行了
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
中列出的特定版本)