应用构建后立即崩溃:java.lang.UnsatisfiedLinkError: 找不到要加载的DSO:libturbomodulejsijni.so。

4

我之前一直使用RN V0.63.3,但遇到了构建失败的问题。于是我将版本更改为0.63.5并成功构建。但现在在开发模式下,我的应用程序在构建后立即崩溃。

错误日志如下:

java.lang.UnsatisfiedLinkError: 找不到要加载的DSO:libturbomodulejsijni.so SoSource 0: com.facebook.soloader.ApkSoSource[root = /data/user/0/com.zcarpet/lib-main flags = 1] SoSource 1: com.facebook.soloader.DirectorySoSource[root = ...

我升级了gradle版本从3.5.2到3.5.3,并尝试了以下解决方法:

  1. 在\Android\build.gradle中使用以下代码:
    configurations.all {
        resolutionStrategy {
            force "com.facebook.react:react-native:0.63.5" 
        }
    }

在\Android\build.gradle文件中添加以下代码:
    project.ext.react = [
        enableHermes: false,  // clean and rebuild if changing
        deleteDebugFilesForVariant: { false }
    ]
  1. 许多其他修复措施都无法解决...

我的项目配置:

    buildscript {
    ext {
        buildToolsVersion = "29.0.2"
        minSdkVersion = 21
        compileSdkVersion = 29
        targetSdkVersion = 29
    }
    repositories {
        google()
        mavenCentral()
        jcenter()
        maven { url 'https://maven.fabric.io/public' }
    }
    dependencies {
        classpath("com.android.tools.build:gradle:3.5.3")
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        if (useIntlJsc) {
            implementation 'org.webkit:android-jsc-intl:+'
        } else {
            implementation 'org.webkit:android-jsc:+'
        }
    }
    }

    allprojects {
    configurations.all {
        resolutionStrategy {
            force "com.facebook.react:react-native:0.63.5" 
        }
    }
    repositories {
        google()
        jcenter()
        mavenLocal()
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url("$rootDir/../node_modules/react-native/android")
        }
        maven {
            // Android JSC is installed from npm
            url("$rootDir/../node_modules/jsc-android/dist")
        }

        maven { url 'https://s3.amazonaws.com/repo.commonsware.com' }
        maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
        maven { url 'https://www.jitpack.io' }
        maven { url "https://maven.google.com" }
        
        google()
        maven { url 'https://www.jitpack.io' }
    }
    // Workaround for https://issuetracker.google.com/117900475
    // Remove when upgrading to AGP 3.4 or higher.
    configurations.matching { it.name == '_internal_aapt2_binary' }.all { config ->
        config.resolutionStrategy.eachDependency { details ->
            details.useVersion("3.5.0-alpha03-5252756")
        }
    }
    }
2个回答

3
请按照以下步骤检查:
  1. 恢复您所做的所有更改(降级gradle、react-native、java和其他所有东西,就像之前一样)
  2. 删除 node_modules
  3. 删除构建文件夹(android/buildandroid/app/build
  4. 检查 package.json 文件,确保 react-native 版本与之前使用的版本相同(在您的情况下为 0.63.3
  5. 运行 npm installyarn 安装包
  6. 清理(删除 gradle 缓存,如此处所述:https://dev59.com/JGAg5IYBdhLWcg3w7enx#30450020),并通过将以下更改添加到您的 android/build.gradle 文件来重新构建应用程序

def REACT_NATIVE_VERSION = new File(['node', '--print',"JSON.parse(require('fs').readFileSync(require.resolve('react-native/package.json'), 'utf-8')).version"].execute(null, rootDir).text.trim())


buildscript {
     // ...
}
    
    
allprojects {
    configurations.all {
          resolutionStrategy {
            force "com.facebook.react:react-native:" + REACT_NATIVE_VERSION
          }
    }
    // ...  
}

参考:自 2022 年 11 月 4 日以来发生的 Android 构建失败的修复和更新 #35210


如何删除 android/build?使用 rm -rf android/build 命令即可。 - Ravis Farooq
没有构建文件,但是有 build.gradle 文件,我需要删除它吗? - Ravis Farooq
如果没有构建文件也没关系(这意味着构建已经干净了)。不要删除gradle文件,只需按照上述剩余步骤进行即可。 - ZFLOC TECHNOLOGIES
1
感谢您的关注,我已经仔细地做了每一步,但是应用程序在构建后仍然会立即崩溃。 - Navid Asadi
我认为这是由于implementation jscFlavor引起的,当我启用Hermes时,错误会变成“支持Hermes的错误”。 - Navid Asadi

1

最终我恢复了11月1日的备份,只需添加以下代码即可使其正常工作。

def REACT_NATIVE_VERSION = new File(['node', '--print',"JSON.parse(require('fs').readFileSync(require.resolve('react-native/package.json'), 'utf-8')).version"].execute(null, rootDir).text.trim())


buildscript {
     // ...
}
    
    
allprojects {
    configurations.all {
          resolutionStrategy {
            force "com.facebook.react:react-native:" + REACT_NATIVE_VERSION
          }
    }
    // ...  
}

将上述内容添加到 build.gradle 中也为我解决了问题。RN 0.64.0 - vitor Correa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接