React Native安卓端Hermes引擎报错:libhermes_executor.so库未找到
React Native Android 构建/运行时错误:
libhermes_executor.so 找不到 问题描述
开发React Native项目时,在Android设备或模拟器上运行应用遭遇Hermes引擎相关错误,具体报错信息如下:
java.lang.UnsatisfiedLinkError: dlopen failed: library "libhermes_executor.so" not found java.lang.Runtime.LoadLibrary0 java.lang.System.LoadLibrary com.facebook.soloader.nativeloader.SystemDelegate.LoadLibrary com.facebook.soloader.nativeloader.NativeLoader.LoadLibrary com.facebook.soloader.SoLoader.LoadLibrary com.facebook.hermes.reactexecutor.HermesExecutor.<clinit> com.facebook.react.ReactInstanceManagerBuilder.getDefaultJSExecutorFactory com.facebook.react.ReactInstanceManagerBuilder.build
已尝试的操作:
- 重新安装项目依赖
- 清除React Native缓存
- 清理Android Studio缓存
- 验证第三方库与React Native版本兼容性
问题仍未解决,寻求可行解决方案。
可行解决方案
1. 确认Hermes启用配置
检查android/app/build.gradle中Hermes是否正确启用:
project.ext.react = [ enableHermes: true, // 确保该值为true ]
同步Gradle后重新构建项目。
2. 配置完整ABI过滤
设备/模拟器的ABI不在构建列表中会导致对应.so文件缺失,在android/app/build.gradle的defaultConfig块中添加全ABI支持:
defaultConfig { // 其他配置项... ndk { abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' } }
3. 彻底清理并重新构建
执行以下命令清理所有缓存与构建文件后重新编译:
# 清理React Native缓存 npx react-native clean # 清理Android构建目录 cd android && ./gradlew clean && cd .. # 重新安装依赖 npm install # 重新运行项目 npx react-native run-android
4. 检查Soloader初始化与版本
确认MainApplication.java中Soloader初始化代码正确:
@Override public void onCreate() { super.onCreate(); SoLoader.init(this, /* native exopackage */ false); // 其他初始化代码 }
同时确保android/app/build.gradle中Soloader依赖版本与React Native版本匹配。
5. 确认Hermes依赖引入
对于React Native 0.64以下版本,需手动引入Hermes依赖:
// android/app/build.gradle 中dependencies块添加 implementation project(':hermes-engine') // settings.gradle中添加项目引用 include ':hermes-engine' project(':hermes-engine').projectDir = new File(rootProject.projectDir, '../node_modules/hermes-engine/android')
6. 验证设备架构兼容性
Hermes不支持armeabi架构的老旧设备,更换为支持armeabi-v7a/arm64-v8a/x86/x86_64架构的设备或模拟器测试。
内容的提问来源于stack exchange,提问作者Muhammad Adeel Zafar
相关产品推荐
相关产品推荐

