添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

I have updated React Native to 0.60-RC2, migrated to AndroidX using the Android Studio refractor and used the jetifier mentioned here: https://github.com/react-native-community/discussions-and-proposals/issues/129

After doing this, I get the error library "libjsc.so" not found when running react-native run-android . i get the same error when running a release APK.

The stacktrace is:

06-24 15:55:01.823  8579  8656 E SoLoader: Error when loading lib: dlopen failed: library "libjsc.so" not found lib hash: 83f1717c1dc187d9f252a9f1fc66d430 search path is /data/app/com.jtv.testapp-4hvCKbqEmbyyOPykuQhm4Q==/lib/arm
06-24 15:55:01.823  8579  8656 E SoLoader: couldn't find DSO to load: libjscexecutor.so caused by: dlopen failed: library "libjsc.so" not found
06-24 15:55:01.825  8579  8656 E AndroidRuntime: FATAL EXCEPTION: create_react_context
06-24 15:55:01.825  8579  8656 E AndroidRuntime: Process: com.jtv.testapp, PID: 8579
06-24 15:55:01.825  8579  8656 E AndroidRuntime: java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libjscexecutor.so caused by: dlopen failed: library "libjsc.so" not found
06-24 15:55:01.825  8579  8656 E AndroidRuntime:    at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:738)
06-24 15:55:01.825  8579  8656 E AndroidRuntime:    at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:591)
06-24 15:55:01.825  8579  8656 E AndroidRuntime:    at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:529)
06-24 15:55:01.825  8579  8656 E AndroidRuntime:    at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:484)
06-24 15:55:01.825  8579  8656 E AndroidRuntime:    at com.facebook.react.jscexecutor.JSCExecutor.<clinit>(JSCExecutor.java:19)
06-24 15:55:01.825  8579  8656 E AndroidRuntime:    at com.facebook.react.jscexecutor.JSCExecutorFactory.create(JSCExecutorFactory.java:29)
06-24 15:55:01.825  8579  8656 E AndroidRuntime:    at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:949)
06-24 15:55:01.825  8579  8656 E AndroidRuntime:    at java.lang.Thread.run(Thread.java:764)

My package.json is:

"name": "TestApp", "version": "0.0.1", "private": true, "scripts": { "start": "node node_modules/react-native/local-cli/cli.js start", "test": "jest" "dependencies": { "@react-native-community/async-storage": "^1.2.0", "@react-native-community/blur": "^3.3.1", "@react-native-community/netinfo": "^1.2.3", "@react-native-community/slider": "^1.0.4", "axios": "^0.18.0", "jetifier": "^1.4.0", "native-base": "^2.10.0", "prop-types": "^15.6.2", "qs": "^6.6.0", "react": "^16.8.6", "react-native": "^0.60.0-rc.2", "react-native-appsee": "^2.6.21", "react-native-device-info": "^0.24.3", "react-native-dialog": "^5.5.0", "react-native-draggable-flatlist": "^1.1.7", "react-native-elements": "^0.19.1", "react-native-email": "^1.0.2", "react-native-fast-image": "^5.1.2", "react-native-gesture-handler": "^1.0.12", "react-native-iap": "^2.4.0", "react-native-image-picker": "^0.28.0", "react-native-iphone-x-helper": "^1.2.0", "react-native-keyboard-aware-scroll-view": "^0.8.0", "react-native-kochava-tracker": "^1.1.0", "react-native-linear-gradient": "^2.5.3", "react-native-material-dropdown": "^0.11.1", "react-native-modal": "^9.0.0", "react-native-orientation": "^3.1.3", "react-native-scrollable-tab-view": "^0.10.0", "react-native-snap-carousel": "^3.7.5", "react-native-super-grid": "^2.4.4", "react-native-tab-view": "^1.3.1", "react-native-underline-tabbar": "^1.3.6", "react-native-vector-icons": "^6.1.0", "react-native-video": "^4.3.1", "react-native-webview": "^5.12.0", "react-navigation": "^3.0.9", "react-navigation-backhandler": "^1.2.0", "react-redux": "^6.0.1", "redux": "^4.0.1", "redux-logger": "^3.0.6", "redux-thunk": "^2.3.0" "devDependencies": { "@babel/core": "^7.4.0", "@babel/runtime": "^7.4.2", "@react-native-community/eslint-config": "^0.0.3", "babel-jest": "^24.5.0", "babel-plugin-transform-remove-console": "^6.9.4", "eslint": "^5.15.3", "eslint-config-airbnb": "^17.1.0", "eslint-plugin-import": "^2.16.0", "eslint-plugin-jsx-a11y": "^6.2.1", "eslint-plugin-react": "^7.12.4", "eslint-plugin-react-hooks": "^1.5.1", "jest": "^24.5.0", "metro-react-native-babel-preset": "^0.53.1", "react-devtools-core": "^3.6.0", "react-test-renderer": "^16.8.6", "remote-redux-devtools": "^0.5.16" "jest": { "preset": "react-native"

My build.gradle is:

apply plugin: "com.android.application"
import com.android.build.OutputFile
project.ext.react = [
        entryFile: "index.js"
apply from: "../../node_modules/react-native/react.gradle"
def enableSeparateBuildPerCPUArchitecture = false
def enableProguardInReleaseBuilds = false
project.ext.vectoricons = [
    iconFontNames: [ 'MaterialIcons.ttf', 'FontAwesome.ttf', 'MaterialCommunityIcons.ttf' ]
apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"
android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion
    defaultConfig {
        applicationId "com.jtv.testapp"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 29
        versionName "0.0.1"
        multiDexEnabled true
        renderscriptTargetApi 29
        renderscriptSupportModeEnabled true
        ndk {
            abiFilters "arm64-v8a", "x86_64","armeabi-v7a", "x86"
        packagingOptions {
            pickFirst 'lib/x86_64/libjsc.so'
            pickFirst 'lib/arm64-v8a/libjsc.so'
            exclude "lib/arm64-v8a/libimagepipeline.so"
            exclude "lib/arm64-v8a/librealm-jni.so"
    signingConfigs {
        release {
            if (project.hasProperty('RELEASE_STORE_FILE')) {
                storeFile file(RELEASE_STORE_FILE)
                storePassword RELEASE_STORE_PASSWORD
                keyAlias RELEASE_KEY_ALIAS
                keyPassword RELEASE_KEY_PASSWORD
    splits {
        abi {
            reset()
            enable enableSeparateBuildPerCPUArchitecture
            universalApk false  // If true, also generate a universal APK
            include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
    buildTypes {
        release {
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
            signingConfig signingConfigs.release
    // applicationVariants are e.g. debug, release
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def versionCodes = ["armeabi-v7a":1, "x86":2, "arm64-v8a": 3, "x86_64": 4]
            def abi = output.getFilter(OutputFile.ABI)
            if (abi != null) {  // null for the universal-debug, universal-release variants
                output.versionCodeOverride =
                        versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
dependencies {
    implementation project(':react-native-webview')
    implementation project(':react-native-jtv-comic-reader')
    //implementation project(':@react-native-community_slider')
    implementation project(':@react-native-community_blur')
    implementation project(':@react-native-community_async-storage')
    implementation project(':@react-native-community_netinfo')
    implementation project(':react-native-appsee')
//    implementation project(':react-native-tune-sdk')
    implementation project(':react-native-iap')
    implementation project(':react-native-gesture-handler')
    implementation project(':react-native-video')
    implementation project(':react-native-vector-icons')
    implementation project(':react-native-orientation')
    implementation project(':react-native-linear-gradient')
    implementation project(':react-native-kochava-tracker')
//    implementation project(':react-native-flurry-analytics')
    implementation project(':react-native-device-info')
//    implementation project(':react-native-fbsdk')
    implementation project(':react-native-fast-image')
    implementation project(':react-native-image-picker')
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation "com.facebook.react:react-native:+"  // From node_modules
    implementation 'com.facebook.fresco:fresco:1.13.0'
    implementation 'com.facebook.fresco:animated-gif:1.13.0'
    implementation 'androidx.mediarouter:mediarouter:1.0.0'
    implementation 'com.google.ads.interactivemedia.v3:interactivemedia:3.11.2'
    implementation 'com.google.android.gms:play-services-ads:18.0.0'
    implementation 'com.google.android.gms:play-services-ads-identifier:17.0.0'
    implementation 'androidx.multidex:multidex:2.0.1'
    implementation 'com.google.android.gms:play-services-ads-identifier:17.0.0'
    implementation 'com.android.installreferrer:installreferrer:1.0'
    implementation 'com.google.android.gms:play-services-location:17.0.0'
    implementation 'com.facebook.android:facebook-android-sdk:4.36.1'
    implementation 'com.swrve.sdk.android:swrve-firebase:6.0.1'
    implementation 'com.google.firebase:firebase-core:17.0.0'
    implementation 'com.google.firebase:firebase-messaging:19.0.0'
    implementation 'androidx.mediarouter:mediarouter:1.0.0'
    implementation 'com.google.android.gms:play-services-cast:17.0.0'
    implementation 'com.googlecode.android-query:android-query:0.25.9'
    implementation 'com.google.android.gms:play-services-cast-framework:17.0.0'
// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
    from configurations.compile
    into 'libs'
apply plugin: 'com.google.gms.google-services'

What is the libjsc.so file and how do I solve this error?

implementation 'org.webkit:android-jsc-intl:+' } else { implementation 'org.webkit:android-jsc:+' I actually deleted the old project, created a new one from react-native init and copied my code onto the new project and it worked. So I can't test this fix. If you are 100% sure this works, then I'll mark this as accepted. – khateeb Jun 27, 2019 at 6:59 had same problem yesterday, this is how I fixed. With new project you will get above setup as default. You can validate in your generated app/build.gradle – Bhaskar Gyan Vardhan Jun 27, 2019 at 7:54 This gets rid of libjsc.so error but now I'm getting libgnustl_shared.so not found on a fresh new RN 0.60 RC2 project. – Can Poyrazoğlu Jun 27, 2019 at 11:06 This solution does not work. I get /com.simplewebview E/SoLoader: couldn't find DSO to load: libjscexecutor.so caused by: dlopen failed: library "libgnustl_shared.so" not found /com.simplewebview E/AndroidRuntime: FATAL EXCEPTION: create_react_context Process: com.simplewebview, PID: 26654 java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libjscexecutor.so caused by: dlopen failed: library "libgnustl_shared.so" not found – Krishnan Sriram Aug 7, 2019 at 15:23 Getting the same issue with libgnustl_shared.so. Does anyone have a solution and a reasonable explanation as to why it's not in the react-native docs? – Chris Oct 8, 2020 at 20:34

I had this issue too. I needed to update the jscFlavor variable inside the build.gradle file from this:

def jscFlavor = 'org.webkit:android-jsc:+'

To this:

def jscFlavor = 'org.webkit:android-jsc-intl:+'

Cheers.

What solved for me was change build.gradle updating packagingOptions to:

  packagingOptions {
       pickFirst 'lib/x86/libc++_shared.so'
       pickFirst 'lib/x86/libjsc.so'
       pickFirst 'lib/x86_64/libjsc.so'
       pickFirst 'lib/arm64-v8a/libjsc.so'
       pickFirst 'lib/arm64-v8a/libc++_shared.so'
       pickFirst 'lib/x86_64/libc++_shared.so'
       pickFirst 'lib/armeabi-v7a/libc++_shared.so'
       pickFirst 'lib/armeabi-v7a/libjsc.so'
                I don't see any of that in my build.gradle.  Is this part of a fresh setup of react-native? react-native-community.github.io/upgrade-helper/…
– Chris
                Oct 5, 2020 at 16:24
                @Chris I don't think so. But it's something that you are asked to add if you installed react-native-pdf: github.com/wonday/react-native-pdf/#android-installation - it might be that the paths are incorrect / doesn't include JSC for a given architecture, so when you run it on that particular phone/architecture, it's a valid app... just not for that phone, so it crashes because it's missing the JSC (javascript engine)
– Seph Soliman
                Jun 7 at 18:10

I encountered a slight variation of this bug, where I had added a third buildType to my gradle config, 'releaseStaging'

The fix in this instance was to add the following line to dependencies in app/build.gradle

releaseStagingImplementation files(hermesPath + "hermes-release.aar")

Same here. Hermes must be enabled for each buildType where it is needed. This change solved it for me – lffloyd Mar 17, 2022 at 15:27

Okay ! In the recent versions of react native till today this issue is occurring and is being reported in the crashlytics that you integrate within the app or you can see it in the logs.

This issue only comes when you have Hermes engine enabled.

Here is my fix for this I was facing this issue, in my case Hermes was needed so, I managed to fix this "libjsc.so" not found by installing the jsc-android package from npm. Here is the link.

Please NOTE : Refer to the docs of this package for proper installation as per your react native version

clean gradle and re run the entire app this issue will be gone.

In my case, This error was related with react-native-screen and adding following following two lines to dependencies section in android/app/build.gradle fixed the issue for me

implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha02'

Source:Check out this Github answer

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.