导出Mupdf和Android Studio 0.5.4

4

首先:我想在我的安卓应用中查看PDF文件。 我进行了谷歌搜索和分析,并决定使用mupdf。 首先,我使用这篇指南构建演示项目,在Eclipse中运行良好。但我需要在Android Studio中运行它。我试着从eclipse中导出gradle项目并导入到Android Studio。文件浏览器正常工作,但当我打开pdf时就会出现错误:

 java.lang.ExceptionInInitializerError
        at com.artifex.mupdfdemo.MuPDFActivity.openFile(MuPDFActivity.java:213)
        at com.artifex.mupdfdemo.MuPDFActivity.onCreate(MuPDFActivity.java:309)
        at android.app.Activity.performCreate(Activity.java:5008)
 ...
 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:14)
        at com.artifex.mupdfdemo.MuPDFActivity.openFile(MuPDFActivity.java:213)
        at com.artifex.mupdfdemo.MuPDFActivity.onCreate(MuPDFActivity.java:309)

我尝试在Eclipse中导入项目而不进行转换,但当我运行应用程序时,出现错误:

Error:Execution failed for task ':app:compileDebugNdk'.

com.android.ide.common.internal.LoggedErrorException: 运行命令失败: C:\SpeedBoots\android-ndk-r9d\ndk-build.cmd NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=C:\mupdf\platform\android\app\build\ndk\debug\Android.mk APP_PLATFORM=android-19 NDK_OUT=C:\mupdf\platform\android\app\build\ndk\debug\obj NDK_LIBS_OUT=C:\mupdf\platform\android\app\build\ndk\debug\lib APP_ABI=all 错误代码: 2 输出: make.exe:*没有规则可以制作目标C:\mupdf\platform\android\app\build\ndk\debug\obj/local/armeabi-v7a/objs/mupdf/C_\mupdf\platform\android\app\src\main\jni',需要C:\mupdf\platform\android\app\build\ndk\debug\obj/local/armeabi-v7a/objs/mupdf/C_\mupdf\platform\android\app\src\main\jni\mupdf.o'。停止。

  1. 如何将mupdf库添加到Android Studio和我的项目中?非常感谢提供任何链接、示例或其他帮助。
  2. 如何将具有本地代码的项目导入到Android Studio?我对NDK一窍不通,担心只是为了导入项目而需要阅读大量教程和书籍。

我将Eclipse项目导出为gradle项目,并在Android Studio中成功运行。但是,当我将此项目作为模块添加到我的一般应用程序中时,出现了新问题,即会出现“从加载器dalvik.system.PathClassLoader[DexPathList[[zip文件“/ data / app / quentin.math.ege-1.apk”],nativeLibraryDirectories = [/ data / app-lib / quentin.math.ege-1,/ vendor / lib,/ system / lib]]]中未能加载mupdf:findLibrary返回null”错误 :( - IliaEremin
1个回答

3
您正在遇到的错误似乎表明您的 .so 文件没有正确地集成到 APK 中。您可以通过解压 APK 并查看 lib/armeabi-v7alib/x86 等文件夹内部来检查。
如果在 jni/ 文件夹下只有一个 .c 或 .cpp 源文件,则可能是此 No rule to make target 错误的原因。在 Windows 上已知存在此类问题: https://code.google.com/p/android/issues/detail?id=66937 如果您在使用 Android Studio 和 NDK 方面遇到其他问题,我写了一篇文章希望能对您有所帮助: http://ph0b.com/android-studio-gradle-and-ndk-integration/

1
你是对的。我的apk没有.so文件。问题在于项目结构。我将我的.so文件从libs移动到src/main/jniLibs,现在它可以工作了!! - IliaEremin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接