android JNI加载mupdf(用NDK编译?)

时间:2011-03-10 00:52:53

标签: android java-native-interface android-ndk

我正在创建一个Android Xoom应用程序,该应用程序在其中一个活动中显示pdf。

我已经下载了mupdf源文件:mupdf.c,Android.mk,Application.mk,Core.mk和ThirdParty.mk。

我也去过mupdf.com网站并尝试从这里下载各种预编译的软件包:http://ccxvii.net/mupdf/download/

我刚从iPhone切换到Android,并且有一些关于包含C代码的东西需要学习。我将mk / c文件放入/ jni /我的项目中。我还试图将我从上面网站上下载的预编译文件复制到项目中的/ jni /中。

我有一个简单的课程:

import android.graphics.*;

    public class PDFView {  
        static {
            System.loadLibrary("mupdf");
        }
    }

每当我创建此类的实例时,应用程序崩溃并且在LogCat中显示“ExceptionInInitializerError”以及“无法加载mupdf:findLibrary返回null”。

我还下载了android NDK并试图自己编译源代码。我得到一个缺少mupdf.h错误和fitz.h错误。只是一整个错误列表,这对于包含库来说似乎过于复杂。

我正在Snow Leopard的Mac上工作。我认为我在正确的道路上需要将其编译为二进制文件,但是花了这么多时间学习NDK然后它将无法编译真的很令人沮丧。也许我需要一个更新的来源。

任何人都可以帮我指出正确的方向吗?

2 个答案:

答案 0 :(得分:2)

您需要在Android.mk中正确设置包含路径

请发布您的Android.mk以获取更多帮助,但在此期间您可以尝试借用NDK文件夹中包含的NDK samples

首先尝试将它们构建为健全性检查,然后查看jni / Android.mk以查看其makefile是如何设置的。

NDK中的docs目录还包含有关Android.mk文件的精彩文档。

老实说,除非你有经验,否则很难使用NDK。了解make,gcc和ld的来龙去脉是至关重要的。

编辑 - 为了简化此过程,我将克隆mupdf git存储库。实际上有一个Android project准备建立。

确保使用git进行克隆,因为您希望拥有所有必需的文件。自述文件有关于构建的简单说明。似乎首先让它工作并从中调整它可能会为您提供更可靠的开发路径。

答案 1 :(得分:0)

我已经能够为android构建mupdf库。 我同意保罗的意见,我不得不做一点修修补补才能让它发挥作用。您应该能够通过微小的更改来修复这些错误。你应该集中注意力,确保所有不同的第三方源文件夹的路径都存在且正确。