2016-06-21 64 views
1

我试图将现有的Android应用程序与React Native整合在一起,遵循guide。它编译和运行,但是当我启动活动做出反应,它与崩溃:React Native找不到开发服务器,整合现有的Android应用程序

Caused by: java.lang.RuntimeException: Could not connect to development server.

我在模拟器都尝试(genymotion)和USB连接的设备上。我运行了adb reverse tcp:8081 tcp:8081并通过adb reverse --list进行了验证,并且还验证了我可以从设备上的浏览器访问http://localhost:8081/index.android.bundle,另外还可以从我的笔记本电脑上访问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)提取包时导致错误。

回答

0

想通了,这是一个系列的不幸事件的:

tutorial的示例代码示出了这一点:

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:

Error: Requiring unknown module "react".If you are sure the module is there, try restarting the packager or running "npm install".

不知道为什么npm install不是在自动拉本,但在运行此手动修复它:

npm install [email protected] 

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

相关问题