【问题标题】:Couldn't load mupdf: findLibrary returned null无法加载 mupdf:findLibrary 返回 null
【发布时间】:2015-04-20 08:04:22
【问题描述】:

我在将 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 构建为库并导入它的教程,但没有人能很好地工作(至少对我而言)。所以我想(我希望),我在操纵过程中做错了什么。 从mupdf导入“Android”模块后,文件夹是这样的:

>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'
        }
    }
}

local.properties

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

我正在使用 Android Studio,并且 SDK 是最新的。

我现在真的不知道如何解决这个问题,如果您有任何可以帮助我的建议,我会很高兴。如果您需要添加任何其他详细信息或文件,请询问。

谢谢。

【问题讨论】:

    标签: android mupdf


    【解决方案1】:

    我的解决办法是:

    我在 lib/armeabi 和 lib/armeabi-v7a 中有 .so 文件,在 build.gradle 中,我将 jniLibs.srcDirs = ['libs'] 添加到现有源集。希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-10
      • 2012-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-23
      • 1970-01-01
      相关资源
      最近更新 更多