无法将React-Native添加到现有应用程序

时间:2017-04-28 20:24:22

标签: android react-native

我无法在现有应用中添加react-native支持。我想通过react-native支持来增强我的Android应用程序。为了显示我的问题,我从Android工作室向导创建了“Hello World”Android应用程序,现在我想添加react-native。我正在关注反应教程

但在添加反应并在设备上安装应用后,我收到以下错误:

04-28 21:47:50.394 12537-12588/? E/AndroidRuntime: FATAL EXCEPTION: mqt_js
                                               Process: pl.fzymek.reactairquality, PID: 12537
                                               java.lang.RuntimeException: com.facebook.react.devsupport.JSException: Could not get BatchedBridge, make sure your bundle is packaged correctly
                                                   at com.facebook.react.bridge.DefaultNativeModuleCallExceptionHandler.handleException(DefaultNativeModuleCallExceptionHandler.java:24)
                                                   at com.facebook.react.devsupport.DevSupportManagerImpl.handleException(DevSupportManagerImpl.java:246)
                                                   at com.facebook.react.cxxbridge.CatalystInstanceImpl.onNativeException(CatalystInstanceImpl.java:465)
                                                   at com.facebook.react.cxxbridge.CatalystInstanceImpl.access$400(CatalystInstanceImpl.java:51)
                                                   at com.facebook.react.cxxbridge.CatalystInstanceImpl$NativeExceptionHandler.handleException(CatalystInstanceImpl.java:481)
                                                   at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:33)
                                                   at android.os.Looper.loop(Looper.java:154)
                                                   at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:196)
                                                   at java.lang.Thread.run(Thread.java:761)
                                                Caused by: com.facebook.react.devsupport.JSException: Could not get BatchedBridge, make sure your bundle is packaged correctly
                                                   at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
                                                   at android.os.Handler.handleCallback(Handler.java:751)
                                                   at android.os.Handler.dispatchMessage(Handler.java:95)
                                                   at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:31)
                                                   at android.os.Looper.loop(Looper.java:154) 
                                                   at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:196) 
                                                   at java.lang.Thread.run(Thread.java:761) 
                                                Caused by: com.facebook.jni.CppException: Could not get BatchedBridge, make sure your bundle is packaged correctly
                                                   at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method) 
                                                   at android.os.Handler.handleCallback(Handler.java:751) 
                                                   at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                   at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:31) 
                                                   at android.os.Looper.loop(Looper.java:154) 
                                                   at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:196) 
                                                   at java.lang.Thread.run(Thread.java:761) 

我的目录结构如下:

├── ReactAirQuality
│   ├── ReactAirQuality.iml
│   ├── app
│   ├── build
│   ├── build.gradle
│   ├── buildsystem
│   ├── gradle
│   ├── gradle.properties
│   ├── gradlew
│   ├── gradlew.bat
│   ├── index.android.js
│   ├── local.properties
│   ├── node_modules
│   ├── package.json
│   └── settings.gradle

Root dir(ReactAirQuality)是从Android工作室向导生成的Android应用程序,在这个目录中我正在运行npm installreact-native start命令。

现在,当我运行./gradlew clean installDebug时,我的设备上安装了应用程序,但是当启动使用react组件的活动时崩溃了。

应用程序托管在github上:https://github.com/fzymek/ReactAirQuality/tree/feature/react-native-support

我做错了什么?

1 个答案:

答案 0 :(得分:0)

似乎错误的是,您将所有文件保存在同一目录中,这不是反应原生的方式....所以您可以做的是:

1)创建一个新的反应本机项目并复制已经准备好的所有js文件..

2)根据您的要求准备package.json,并将index.android.js和index.ios.js与您现有的js文件链接。

3)现在运行npm install。如果ios文件夹中有pod文件,则运行pod install

4)最后但并非最不重要的是rnpm link链接原生模块..

上面的代码向您展示了如何将现有项目与新项目合并的方式..

由于您未更改设置以在设备中运行应用程序,因此您的代码中会出现错误。

1)打开开发菜单(command + m)

2)选择开发设置并在其中输入您的IP地址(@@@。@@@。@。@@:8081)

干杯:)