React Native应用模拟器运行正常,真机启动崩溃报libflipper.so相关错误
问题根因
该报错由React Native默认集成的调试工具Flipper的原生库加载失败导致:_Unwind_Backtrace是NDK的unwind库内置符号,Flipper 0.125+ 版本使用高版本NDK编译后,在Android 9(API 28)及以下的64位真机上会出现该符号缺失的问题,高版本Android模拟器不受影响。
排查步骤
- 确认当前运行的包类型:Release包默认不会打包Flipper,若Release包也出现该报错,说明配置错误将Flipper打进了正式包
- 确认故障真机的Android系统版本:该问题99%出现在Android 9及以下的64位设备上
- 确认项目Flipper版本:RN 0.62及以上版本默认集成Flipper,版本高于0.123.0就可能出现兼容性问题
解决方案
场景1:仅需测试业务功能/打正式上架包
直接禁用Flipper即可,不会影响任何业务代码运行,只是无法使用Flipper提供的调试能力,操作步骤:
- 打开项目
android/gradle.properties文件,添加如下配置:
FLIPPER_VERSION=0.0.0
- 可选操作:打开
android/app/src/main/java/com/[你的项目包名]/MainApplication.java,注释掉Flipper初始化代码:
// 注释掉整段Flipper初始化逻辑 // if (BuildConfig.DEBUG) { // initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); // }
- 清理缓存重新打包即可解决崩溃。
场景2:Debug模式下需要在低版本真机使用Flipper调试
降级Flipper到最后一个兼容低版本Android的版本即可:
- 打开
android/gradle.properties,修改Flipper版本配置:
FLIPPER_VERSION=0.123.0
- 执行缓存清理命令:
cd android ./gradlew clean cd .. rm -rf node_modules npm install # 或 yarn install
- 重新运行Debug包即可。
场景3:不想降级Flipper也需要兼容低版本真机
在NDK配置中强制链接unwind库即可:
打开android/app/build.gradle,在android.defaultConfig.ndk块添加配置:
android { defaultConfig { ndk { abiFilters "arm64-v8a", "armeabi-v7a" // 新增下面这行配置 ldLibs "libunwind.a" } } }
重新编译运行即可。
内容的提问来源于stack exchange,提问作者Faizan Ahmad
相关产品推荐
相关产品推荐

