You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RN 0.63.2升级compileSdkVersion至31后启动崩溃:找不到libhermes-executor-release.so

针对React Native 0.63.2升级compileSdkVersion到31后的崩溃解决方案

问题背景

项目基于React Native 0.63.2,原compileSdkVersion为30可正常构建,出现AAPT: error: resource android:attr/lStar not found错误后,升级compileSdkVersion和targetSdkVersion至31,编译成功但Android 13设备启动即崩溃,Logcat核心报错为java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes-executor-release.so,且已开启Hermes。

适配RN 0.63.2的解决方案

方案1:锁定兼容的Hermes版本

RN 0.63.2默认Hermes版本与compileSdk 31存在兼容性冲突,需强制指定适配版本:

  • 在项目根目录build.gradle的allprojects块中添加依赖约束:
allprojects {
    repositories {
        // 保留原有仓库配置
    }
    configurations.all {
        resolutionStrategy {
            force 'com.facebook.hermes:hermes-engine:0.7.2'
        }
    }
}
  • 执行./gradlew clean清理构建缓存,重新编译项目。

方案2:修改SoLoader初始化逻辑

RN 0.63.2的SoLoader在Android 13上的加载逻辑存在缺陷,手动指定加载的库文件:

  • 打开MainApplication.java,在onCreate方法最开头添加初始化代码:
import com.facebook.soloader.SoLoader;
import java.util.Arrays;

@Override
public void onCreate() {
    super.onCreate();
    // 手动指定Hermes相关库的加载顺序
    SoLoader.init(this, false, Arrays.asList(
        "libhermes.so",
        "libhermes-executor-release.so"
    ));
    // 保留原有初始化代码
}

方案3:回退compileSdk到30并解决lStar错误

若升级compileSdk到31成本过高,可回退版本并通过依赖AndroidX Core库解决lStar缺失问题:

  • 在android/app/build.gradle的dependencies块中添加:
dependencies {
    // 保留原有依赖
    implementation 'androidx.core:core:1.6.0'
}
  • 在项目根目录build.gradle的allprojects块中添加约束:
allprojects {
    configurations.all {
        resolutionStrategy {
            force 'androidx.core:core:1.6.0'
        }
    }
}
  • 执行./gradlew clean后重新构建,既保留compileSdk 30,又解决lStar错误。

验证步骤

  1. 执行./gradlew clean清除构建缓存
  2. 重新打包APK并安装到Android 13设备
  3. 查看Logcat确认崩溃日志消失,应用正常启动

内容的提问来源于stack exchange,提问作者dnvarun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 15:51:41