React Native Android错误总结

原创 2016年05月31日 10:22:22

错误一

提示:Exception in native call from JS
java.lang.RuntimeException: ReferenceError: Can’t find variable: __fbBatchedBridge
这类错误是刚刚接触RN时容易犯的错误,请检查你的手机或者模拟器是否和你的RN服务端在同一个局域网内。
或者如果你的js文件调试没问题,你可以将JS打包,命令:

react-native bundle --entry-file index.android.js --bundle-output ./android/app/src/main/assets/index.android.bundle --platform android --assets-dest ./android/app/src/main/res/ --dev false

index.android.js是我要打包的js,最终生成名称是index.android.bundle,这是我需要的打包后的文件。然后将最终生成的index.android.bundle放入到你的工程文件下面的assets目录下,没有则创建一个。

错误二

提示:Exception in native call from JS
com.facebook.react.bridge.NativeArgumentsParseException: InteractionManager.pushToArticleDetail got 2 arguments, expected 1
这种类似
com.facebook.react.bridge.NativeArgumentsParseException: *.* got * arguments, expected *
这种问题的往往是在Android和JS通信是产生的错误,检查一下你的接口中的参数,例子提示的是InteractionManager.pushToArticleDetail的参数,JS中有两个,而Android中参数只有一个,所以检查参数,比对上即可。

错误三

提示:com.facebook.react.bridge.NativeArgumentsParseException: TypeError: expected dynamic type string', but had typeobject’ (constructing arguments for InteractionManager.pushToArticleDetail at argument index 0)
类似这种提示,往往是接口中参数类型的不匹配,需要注意的是RN接口中参数和Java参数的对应:

Boolean -> Bool
Integer -> Number
Double -> Number
Float -> Number
String -> String
Callback -> function
ReadableMap -> Object
ReadableArray -> Array

将所需的参数类型改成提示类型即可。

错误四

提示: Cannot convert argument of type class java.util.HashMap
at com.facebook.react.bridge.Arguments.fromJavaArgs(Arguments.java:57)
at com.facebook.react.bridge.CallbackImpl.invoke(CallbackImpl.java:29)
at com.zhihui.zbl.modules.InteractionManager.pushToArticleDetail(InteractionManager.java:45)

这种是在Callback中回调的参数有问题,需要了解下Callback和Promise。

Callback和Promise

以下内容原文地址
在react-native中可以通过在java层自定义ReactMethod(https://segmentfault.com/a/1190000004486024)方式给JavaScript调用,这样在JavaScript层就可以直接调用Android中的Native方法.
但在大部分的方法调用中,都需要知道调用方法之后的处理结果是什么,有没有出现异常等情况。JavaScript本身是事件驱动的语言,需在JavaScript中可以使用回调方法来处理函数返回的结果。同样地在react-native中定义了Callback和Promise的接口,用来处理JavaScript调用Java方法的回调。

Callback

Callback是react.bridge中的一个接口,它作为ReactMethod的一个传参,用来映射JavaScript的回调函数(function)。Callback接口只定义了一个方法invoke,invoke接受多个参数,这个参数必须是react.bridge中支持的参数。

Promise

Promise是ES6中增加的对于异步编程和回调更加友好的API(https://segmentfault.com/a/1190000004505028),使用Promise可以更简洁,更灵活地处理回调。
在react.briage中定义的Promise接口,实现了resolve和reject的方法,resolve用来处理正确处理结果的情况,reject用来处理异常的情况。
使用Promise比使用Callback更加的简洁,还能更加灵活的在多线程之间进行切换。

版权声明:本文为博主原创文章,未经博主允许不得转载。

React Native常见问题汇总(持续更新ing)

1.创建新项目,react-native init AwesomeProject命令长时间无响应,或报错shasum check failed react-native命令行从npm官方源拖代码时会遇...
  • chichengjunma
  • chichengjunma
  • 2016年10月27日 10:14
  • 9652

解决ReactNative崩溃:Can't find variable: __fbBatchedBridge

这个坑我花了两天时间才爬出来!! 首先关于这个问题,甭管google、百度还是看issue,大都给的解决方案是 + 检查packager是否启动了? + 尝试adb reverse t...
  • guxiao1201
  • guxiao1201
  • 2016年03月15日 19:20
  • 16653

[React-native]第一行代码Helloworld及集成已有项目的方案

一、参考官方文档点击打开链接写了第一个文档hello world 二、开启学习ES 6第一步:部署支持环境 三、在已有项目中引入react native...
  • haibo_bear
  • haibo_bear
  • 2016年11月02日 19:07
  • 1736

React Native demo运行报错:Cannot find entry file index.android.js in any of the roots

android运行GaGaMall出现如图错误,怎么弄都不行,index.android.js明明在根目录的,头疼的要死...可是同事那边下的,在npm install后,拷贝过来又行了... ...
  • elyonsaber
  • elyonsaber
  • 2016年08月12日 16:53
  • 7568

axios 在单元测试中遇到 can't find variable: promise 解决方法

在使用单元测试遇到axios报错,一番搜索找到解决方案。记录下 错误can't find variable: promise错误原因由于Karma配置的浏览器是PhantomJS,并不支持Promis...
  • violetjack0808
  • violetjack0808
  • 2017年06月26日 15:15
  • 1385

《React-Native系列》45、踩坑记录

记录几个最近在项目中遇到的坑,RN版本使用0.29.2。1、在Android平台上Text标签的 lineHeight 需要设置成int ,否则会crash;在iOS平台上没有问题。如下图:com.f...
  • hsbirenjie
  • hsbirenjie
  • 2017年03月16日 11:26
  • 4109

React native 技术中 android 和 iOS 平台差异

1 在android 开发和iOS 开发中 会有平台的差异性1 在开发中,发现android 平台对js 数据类型的要求,相对于ios 平台要严格些,案例,在展现大图的时候,android 平台 点...
  • ahubenkui
  • ahubenkui
  • 2017年06月01日 21:01
  • 568

[ReactNative] js 和 native 怎么通讯(eg. Toast)

native 怎么写 自定义module //ToastModule.java package com.retest; import android.widget.Toast; imp...
  • tomlucky1024
  • tomlucky1024
  • 2018年01月10日 11:32
  • 47

React Native 配置遇到的错误:TransformError

按照http://bbs.reactnative.cn/topic/10/%E5%9C%A8windows%E4%B8%8B%E6%90%AD%E5%BB%BAreact-native-android...
  • c910511
  • c910511
  • 2016年01月28日 16:44
  • 10548

初次接触到react-native,遇到的两个失误

初次接触到react-native,遇到的两个错误错误一D:\node\AwesomeProject>react-native run-android Starting JS server... Bu...
  • mymy_blog
  • mymy_blog
  • 2017年06月15日 12:03
  • 3529
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:React Native Android错误总结
举报原因:
原因补充:

(最多只允许输入30个字)