簡體   English   中英

UnsatisfiedLinkError:findLibrary返回null

[英]UnsatisfiedLinkError: findLibrary returned null

我正在編寫Google Glass應用程序。 我使用的第三方庫包含一些資產(以及將它們放置在資產/目錄中的說明),一些jar(以及將它們放置在libs / dir中的說明)和一個.so(以及放置它們的說明)它在libs / armenabi-v7a /中)。

當我運行該應用程序時,出現UnsatisfiedLinkError,它似乎未包含.so。 解壓縮apk證實了這一點,我在那里看不到.so。

java.lang.UnsatisfiedLinkError: Couldn't load nameofsofile_jni from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.package.demo-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.package.demo-1, /vendor/lib, /system/lib]]]: findLibrary returned null
        at java.lang.Runtime.loadLibrary(Runtime.java:358)
        at java.lang.System.loadLibrary(System.java:529)
        at <Calls inside the external library>

我的build.gradle:

apply plugin: 'com.android.application'

repositories {
    jcenter()
    flatDir {
        dirs 'prebuilt-libs'
 }
}

android {
    compileSdkVersion "Google Inc.:Glass Development Kit Preview:19"
    buildToolsVersion "21.1.2"

defaultConfig {
    applicationId "com.package.demo"
    minSdkVersion 19
    targetSdkVersion 21
    versionCode 1
    versionName "1.0"
}

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
    compile fileTree(dir: new File(buildDir, 'libs'), include: '*.jar')
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile files('src/main/libs/jarone.jar')
    compile files('src/main/libs/jartwo.jar')
    compile files('src/main/libs/jarthree.jar')
}

如何獲取包含.so的內容?

在Android Studio中,默認情況下,.so文件應放置在src/main/jniLibs/而不是src/main/libs/ 我看不到您要更改此設置的原因,但是可以將以下代碼添加到build.gradle文件的android{}部分中。

sourceSets.main {
    jniLibs.srcDir 'src/main/libs'
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM