2015-04-20 4 views
1

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

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') 
    } 
} 
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 в актуальном состоянии.

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

спасибо.

ответ

1

Мое решение:

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

Смежные вопросы