React Native安卓release包运行时执行fetch函数触发应用崩溃求助
问题根因定位
从你提供的崩溃日志可以直接定位直接崩溃原因:com.facebook.react.bridge.UnexpectedNativeTypeException: Value for message cannot be cast from Boolean to String
异常栈最终指向DialogModule.showAlert,说明你在代码中调用React Native原生Alert弹窗时,传入的message参数是布尔值,而非要求的字符串类型。Release构建模式下RN不会做隐式类型转换,直接触发原生层的类型转换异常崩溃。
崩溃时机和fetch执行重合,是因为你在fetch请求的成功/异常处理逻辑中,调用了Alert弹窗提示结果,触发了上述类型错误。
已知代码潜在问题
- catch块变量名错误:你捕获异常的形参为
err,但代码中打印的是未定义的error,如果后续逻辑中直接使用error变量会引发额外异常 - 如果你使用的
serverurl是http明文协议地址,Android 9及以上系统正式包默认禁止明文请求,会导致fetch直接抛出异常,异常对象的属性如果未做类型处理就传入Alert,就会触发崩溃
排查修复步骤
- 找到fetch请求关联的所有
Alert.alert调用代码,检查第二个参数(message)的类型,所有非字符串内容必须用String(xxx)或者xxx.toString()显式转换为字符串后再传入 - 临时注释fetch相关的所有Alert逻辑,打正式包测试是否还会崩溃,验证问题来源
- 修正catch块的变量名错误,捕获异常后先完整打印
err对象内容,确认异常结构后再取对应属性使用 - 如果是http明文请求限制问题,在Android项目
AndroidManifest.xml的application节点添加android:usesCleartextTraffic="true"配置,或者将请求地址升级为https协议
内容的提问来源于stack exchange,提问作者Nguyen
相关产品推荐
相关产品推荐

