【问题标题】:UnsatisfiedLinkError: dlopen failed: library not foundUnsatisfiedLinkError: dlopen failed: library not found
【发布时间】:2016-01-20 14:17:52
【问题描述】:

我使用了 Wikiitude SDK v4,当我启动我的 Activity 时,我得到了这个错误。我的 IDE 是 Android Studio 1.5 和 targetSDK 22

Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library "/data/data/xxxx/libarchitect.so" not found.

我的 app/libs 文件夹中有 wikitudesdk.jar,这是我的 gradle 文件:

apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "23.0.2"

defaultConfig {
    applicationId "xxxx"
    minSdkVersion 11
    targetSdkVersion 23
    versionCode 2
    versionName "2"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

packagingOptions {
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/maven/commons-io/commons-io/pom.xml'
    exclude 'META-INF/maven/commons-io/commons-io/pom.properties'
    }
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:support-v4:23.1.1'
compile 'com.android.support:recyclerview-v7:23.1.1'
compile 'com.android.support:gridlayout-v7:23.1.1'
...

}

最好的后卫

【问题讨论】:

  • 解压后的apk文件/lib目录里面有什么?列出所有架构的所有库
  • 在我的 lib/ 目录中,我有:arm64-v8a/libarchitect.soarmeabi-v7a/libarchitect.sox86 /libarchitect.so 。就是这样
  • 你的设备是什么?

标签: android android-studio wikitude .so


【解决方案1】:

你可以试试System.load("data/data/yourpackagename/lib/soname.so")(使用你的.so文件的真实路径)。

【讨论】:

    【解决方案2】:

    在你的 build.gradle 文件中试试这个

    android {
        packagingOptions {
            exclude "lib/arm64-v8a/libarchitect.so"
        }
    }
    

    【讨论】:

    • 您上面的代码不起作用。同样的错误:dlopen("/data/data/xxxx/libarchitect.so", RTLD_LAZY) failed: dlopen failed: library "/data/data/xxxx/libarchitect.so" not foundCaused by: java.lang.UnsatisfiedLinkError: dlopen failed: library "/data/data/xxxx/libarchitect.so" not found
    【解决方案3】:

    您实际上使用的是 targetSdkVersion 23。试试 targetSdkVersion 22。 对于 android 6.0,这可能是 .so 中文本重定位的问题

    https://code.google.com/p/android-developer-preview/issues/detail?id=3028

    【讨论】:

      【解决方案4】:

      我在使用 wikiitude 库时遇到了同样的错误。我通过将项目级 build.gradle 类路径恢复为

      来解决它
      'com.android.tools.build:gradle:1.0.0' 
      

      来自

      'com.android.tools.build:gradle:1.5.0' 
      

      还需要更改项目级别设置以使用默认 gradle 包装器(Settings -> Build, Execution, Deployement -> Gradle

      【讨论】:

      • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post。 - From Review
      • 我在使用 wikiitude 库时遇到了同样的错误;通过将 build.gradle(Project) 更改为 classpath 'com.android.tools.build:gradle:1.0.0' 来解决它。
      • 我在使用 wikiitude 库时遇到了同样的错误;通过将 build.gradle(Project) 类路径从 'com 更改为 'com.android.tools.build:gradle:1.0.0' 解决了这个问题.android.tools.build:gradle:1.5.0'。还要更改项目级别设置以使用默认 gradle 包装器(设置 -> 构建、执行、部署 -> Gradle)
      猜你喜欢
      • 2021-03-30
      • 2022-12-04
      • 1970-01-01
      • 2016-01-11
      • 2016-06-29
      • 1970-01-01
      • 2017-03-21
      • 2015-12-30
      • 2014-06-23
      相关资源
      最近更新 更多