Не удалось загрузить mupdf: findLibrary вернул null

У меня проблема с импортом библиотеки mupdf в мое приложение для Android. Проблема в том, что на прошлой неделе программа работала хорошо, и я, вероятно, изменил что-то в коде, который больше не загружает mupdf. Если я попытаюсь загрузить файл PDF, у меня появится сообщение «-мое приложение-остановлено». Вот сообщение об ошибке logcat:

2530-2530/com.efc.efcredader E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.ExceptionInInitializerError
        at com.artifex.mupdfdemo.MuPDFActivity.openFile(MuPDFActivity.java:944)
        at com.artifex.mupdfdemo.MuPDFActivity.onCreate(MuPDFActivity.java:710)
        [...]
 Caused by: java.lang.UnsatisfiedLinkError: Couldn't load mupdf: findLibrary returned null
        at java.lang.Runtime.loadLibrary(Runtime.java:365)
        at java.lang.System.loadLibrary(System.java:535)
        at com.artifex.mupdfdemo.MuPDFCore.<clinit>(MuPDFCore.java:16)
        [...]

Я вызываю libmupdf.so так:

static {
    System.loadLibrary("mupdf");
}

Я следил за множеством руководств о том, как создать mupdf как библиотеку и импортировать ее, но никто не работает хорошо (по крайней мере, для меня). Так что я предполагаю (и надеюсь), что делаю что-то не так во время манипуляции. После того, как я импортировал модуль «Android» из mupdf, папка выглядит так:

>android
    >manifests
        Android.Manifest.xml
  >java
      >com.artifex.mupdfdemo
          All java files
  >res
      >animator
          Xml files
      >drawable
          Xml files
      >layout
          Xml files
      >values
          Xml files
  >c
      Android.mk
      Application.mk
      Core.mk
      libmupdf.so
      mupdf.c
      ThirdParty.mk

Даже если я попытаюсь скомпилировать его в одиночку, у меня тоже будут некоторые ошибки:

make.exe:***No rule to make target ...

и

Execution failed for task ':android:compileDebugNdk'.
com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\android-ndk-r10d\ndk-build.cmd'' finished with non-zero exit value 2

Вот проект build.gradle

apply plugin: 'android'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':appcompat_v7')
    compile project(':android-support-v4-preferencefragment-master')
    compile project(':android-support-v7-gridlayout')
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.1"
    compileOptions.encoding = 'ISO-8859-1'

    packagingOptions {
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/LICENSE.txt'
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}

android build.gradle:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 16
    buildToolsVersion "19.1.0"

    defaultConfig {
        //applicationId "com.artifex.mupdfdemo"
        minSdkVersion 8
        targetSdkVersion 16

        ndk {
            moduleName "mupdf"
        }
    }

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

местные.свойства

sdk.dir=C\:\\Android\\SDK
ndk.dir=C\:\\android-ndk-r10d

Я использую Android Studio, и SDK обновлен.

Я действительно не знаю, как решить это прямо сейчас, я был бы рад, если у вас есть какие-либо советы, которые могут мне помочь. Если вам нужны какие-либо другие детали или файлы для добавления, просто спросите.

Спасибо.


person Anto    schedule 20.04.2015    source источник


Ответы (1)


Мое решение:

У меня есть файлы .so в lib/armeabi и lib/armeabi-v7a, а в build.gradle я добавил jniLibs.srcDirs = ['libs'] к существующим наборам исходников. Надеюсь, это поможет вам!

person mbo    schedule 11.06.2015