我无法在现有应用中添加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 install
或react-native start
命令。
现在,当我运行./gradlew clean installDebug
时,我的设备上安装了应用程序,但是当启动使用react组件的活动时崩溃了。
应用程序托管在github上:https://github.com/fzymek/ReactAirQuality/tree/feature/react-native-support。
我做错了什么?
答案 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)
干杯:)