使用Android NDK编译MuPDF 1.0

MuPDF是一个轻量级的简易版PDF阅读器,它的功能简单,启动快速,渲染效果不错。MuPDF是免费软件,并提供了Android下的源码,本文就将介绍一下如何将MuPDF编译成Android下的类库。

关于JDK、ANT、Android SDK、NDK和Cygwin(Windows下使用)的安装配置这里就不再叙述了,网上有相关教程,可以自己搜一下,本文重点介绍编译过程和关键步骤。该方法是基于MuPDF 1.0官方下载包中android目录下的ReadMe文档进行的,已经在Ubuntu 10.10和Windows XP下编译成功,编译生成的so文件已经上传到了CSDN,下载地址在文章末。下面就是编译过程的主要步骤了:

1. 下载安装Android SDK,确保把tools和platform-tools目录添加到PATH。

2. 下载解压Android NDK,确保把解压目录添加到PATH。

3. 下载安装JDK,确保把安装目录设置成JAVA_HOME环境变量,并设置好PATH。

4. 下载安装ANT,确保把安装目录设置成ANT_HOME环境变量,并设置好PATH。

5. 下载解压mupdf-1.0-source.tar.gz,得到mupdf-1.0-source目录。

6. 打开mupdf-1.0-source/android目录下的local.properties.sample文件,另存为local.properties,在最后一行添加sdk.dir的具体地址。

7. 下载解压mupdf-thirdparty.zip,将解压生成的thirdparty目录移动到mupdf-1.0-source目录下。

8. (最关键的一步)生成“generated”目录,cd到mupdf-1.0-source目录下,命令行输入make命令,执行后会自动生成需要的“generated”目录。“generated”目录中生成的文件如下图所示:

9. cd到mupdf-1.0-source/android目录下,在命令行执行ndk-build命令,开始编译本地代码,最终会在lib目录下生成libmupdf.so文件。

其中,第8步是本文最关键的一步,因为MuPDF 1.0没有提供“generated”目录及文件的下载,需要自己编译生成。整个过程涉及多个平台的安装配置,所以也比较复杂。本文的步骤已经在Linux和Windows下编译测试,并成功生成了libmupdf.so文件,下载地址是:http://download.csdn.net/detail/wo423636277/4322696

使用Android NDK编译MuPDF 1.0》上有 15 条评论

  1. Pingback 引用通告: 本博客原创资源下载(第一期)

  2. 博主,为什么我按照你说的引入后工程后,MuPDFActivity.java文件中会报错,说是不存在AnimatorSet这个类,怎么办啊

    • 1、新建Android项目Example
      2、在Example的目录下新建libs文件夹
      3、将生成的armeabi和armeabi-v7a两个目录放到libs下
      4、将mupdf-1.0-source/android目录中res和src目录以及AndroidManifest.xml文件复制到Example目录中
      说明:理论上这样应该就可以运行了,但是源码是mupdf提供的,在res和src中有,你可以在那基础上进行修改。

  3. 博主有沒有试过在mac os 下编译,我ndk build 的时候发生final link failed: Nonrepresentable section on output 的错误,貌似什么库连接的问题,ndk 是现在google 最新release的。
    可以让我知道一下“generated”目录下会make 出什么档案吗?
    谢谢

    • mac os下没有试过,因为我没有mac的设备啊。
      只有make这一步成功了,才能正确完成ndk build。
      我已经把“generated”目录下的文件贴图到文章中了,你看看吧,希望对你有帮助。

      • 比对看过了,make出来的档案一致,那应该是ndk 编译用到libaray的问题吧,对gcc编译这一块不是很熟。
        不过直接使用博主编译出来的lib,完全能work 没问题,真的帮了我一个大忙,万分感谢^^

    • Android SDK、NDK的安装目录不要有空格,所以尽量不要安装到“Program Files”文件夹下,因为有空格。我编译时,mupdf的目录是D:\Android\android-ndk-r8\samples\mupdf-1.0-source,我就把它放到了ndk的samples文件夹下。整个过程环节比较多,不能有过多的差错才能编译成功。

  4. 我在安装JDK后就没设置过path之类,不知道为何也能正常工作,现在想升级个JDK1.7就不行了,你安装的时候怎么设置的?

    • 右击我的电脑选择属性,在高级中选择环境变量,我记得好像要加什么bin之类的,如果环境变量设置成功,在cmd中输入java -version会显示版本,网上应该有好多教程。如果下载了eclipse,不设置环境变量eclipse应该也可以自动找到jdk的位置。jdk7.0俺就不懂了…

发表评论

电子邮件地址不会被公开。 必填项已用*标注
教你如何拥有自己的Gravatar头像