Getting “java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so” error

前端 未结 4 1085
旧时难觅i
旧时难觅i 2021-01-17 18:53

I\'m in the process of migrating a React Native project from react-native version 0.58.5 to 0.60.4.

For the Android part I\'ve done all the changes mentioned here

相关标签:
4条回答
  • 2021-01-17 19:13

    I solved this problem by a tiny change after doing this steps in this article

    https://github.com/facebook/react-native/issues/25415

    Then make sure to add this jsc-android block to your android/build.gradle:

    allprojects {
        repositories {
            mavenLocal()
            maven {
                // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
                url("$rootDir/../node_modules/react-native/android")
            }
    
            //THIS ONE
            maven {
                // Android JSC is installed from npm
                url("$rootDir/../node_modules/jsc-android/dist")
            }
    
            google()
            jcenter()
        }
    }
    
    0 讨论(0)
  • 2021-01-17 19:24

    you can use the older version of com.facebook.soloader:soloader by adding configurations.all into your build.gradle

    configurations.all {
        resolutionStrategy {
            force "com.facebook.soloader:soloader:0.8.2"
        }
    }
    

    like this build.gradle

    buildscript {
        repositories {
            google()
            jcenter()
    
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.5.0'
    
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
    
    configurations.all {
        resolutionStrategy {
            force "com.facebook.soloader:soloader:0.8.2"
        }
    }
    
    allprojects {
        repositories {
            google()
            jcenter()
    
        }
    }
    
    task clean(type: Delete) {
        delete rootProject.buildDir
    }
    
    

    perform below steps if the above steps are not working

    app/build.gradle.

    android {
      ...
      // add the following packagingOptions 
      packagingOptions {
        pickFirst 'lib/x86_64/libjsc.so'
        pickFirst 'lib/arm64-v8a/libjsc.so'
      }
    }
    

    We also added the following to the defaultConfig in the app/build.gradle

    ndk {
      abiFilters 'armeabi-v7a', 'x86'
    }
    
    0 讨论(0)
  • 2021-01-17 19:29

    Double-check please all the updates here - https://react-native-community.github.io/upgrade-helper/?from=0.59.9&to=0.60.5

    I had the same error, because made a mistake in migration of the android/app/build.gradle file.

    0 讨论(0)
  • 2021-01-17 19:32

    I solved this problem by this steps

    1. install hermesvm : npm i hermesvm
    2. install jsc-android : npm i jsc-android

    3.add this lines to app/build.gradle

    project.ext.react = [
       entryFile: "index.js" ,
       enableHermes: false
    ]
    
    def jscFlavor = 'org.webkit:android-jsc:+'
    def enableHermes = project.ext.react.get("enableHermes", false);
    
    
    dependencies {
       if (enableHermes) {
           def hermesPath = "../../node_modules/hermesvm/android/";
           debugImplementation files(hermesPath + "hermes-debug.aar")
           releaseImplementation files(hermesPath + "hermes-release.aar")
        }
       else { implementation jscFlavor }
    
    1. add this jsc-android block to your android/build.gradle:
         allprojects {
           repositories {
             maven {
               url("$rootDir/../node_modules/react-native/android")
             }
             maven {
                url "$rootDir/../node_modules/react-native/android"
             }
             google()
             jcenter()
           }
         }
    
    0 讨论(0)
提交回复
热议问题