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