【问题标题】:How to solve UnsatisfiedLinkError?如何解决 UnsatisfiedLinkError?
【发布时间】:2018-08-13 15:20:49
【问题描述】:

我正在使用 Android Studio 3,并尝试在我的设备上使用 OpenCL。 APK 编译失败:

java.lang.UnsatisfiedLinkError: dlopen failed: library "libcutils.so" not found

这是我的 build.gradle:

apply plugin: 'com.android.application'
def appDir = getProjectDir().toString()
def includeDir = appDir + "/src/main/cpp/include/"
def libDir = appDir + "/src/main/jniLibs/"
def arm64lib = libDir + "/arm64-v8a/"
def armeabilib = libDir + "/armeabi-v7a/"

android {

compileSdkVersion 28
defaultConfig {
    applicationId "com.example.miche.androidopencltest"
    minSdkVersion 23
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    externalNativeBuild {
        cmake {
            cppFlags "-frtti -fexceptions"
            cppFlags "-I${includeDir}".toString()
            cppFlags '-std=c++11'
        }
    }

}

splits{
    abi{
        enable true
        reset()
        include "armeabi-v7a"
        universalApk false
    }
}


project.ext.versionCodes = ['armeabi-v7a': 1]


buildTypes {
    release {
        //minifyEnabled false
        //proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

我哪里做错了?

编辑

即使在设备的 /lib/ 文件夹中也找不到正确的 .so。

【问题讨论】:

    标签: android android-studio gradle android-ndk


    【解决方案1】:

    即使在设备的 /lib/ 文件夹中也找不到正确的 .so。

    https://developer.android.com/about/versions/nougat/android-7.0-changes

    应用不应使用未包含在 NDK 中的原生库,因为它们可能会在不同版本的 Android 之间更改或被删除。

    libcutils.so 是私有 NDK 库之一。

    如果应用以 API 级别 24 或更高级别为目标,您的应用会因为您尝试访问私有库而崩溃。请注意,您的应用通过 targetSdkVersion 28 定位到 28。

    【讨论】:

      猜你喜欢
      • 2019-07-11
      • 2018-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多