簡體   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