React Native系列(六)- 踩坑合集

Yukino 944 2022-11-14

一、Android Release包无法发起HTTP请求

因为项目只要求安卓版本,所以只打了安卓的APK,其中遇到点问题,故记录一下

这个是因为安全性考虑,安卓目前默认只允许https,如果需要使用http需要在android/app/src/AndroidManifest.xml中的application标签上加上android:usesCleartextTraffic="true"参数,如下:

<manifest ...>
  <application
     ...
     android:usesCleartextTraffic="true">
  </application>
</manifest>

二、APP闪退诊断

APP闪退时,非React Native的问题,Metro是不会打印错误日志的,但有些情况,就比如我遇到的Android 12新增的BLUETOOTH_SCAN权限兼容问题,就属于安卓原生的错误,如果我们和平时一样用logcat | grep ReactNativeJS去监听日志,也是看不到错误日志的,不用grep过滤的话,安卓的日志属实有点多,不太好定位,请教了下终端的同事使用logcat | grep AndroidRuntime就能看到APP闪退的日志,灰常方便:

java.lang.SecurityException: Need android.permission.BLUETOOTH_SCAN permission for android.content.AttributionSource@9c58cd14: GattService registerScanner MIUI

定位好问题就好解决了