MuPDF是一款强大的PDF解析器,目前最新的版本是1.2,下面详细介绍一下在WINXP下的编译方法,编译遇到困难的同学可以仔细看看,保证能成功。
具体的编译方法,在MUPDF的网站上有介绍:http://www.mupdf.com/doc/how-to-build-mupdf-for-android
但只看这篇介绍还远远不够,许多地方对新手来说还是比较困难的,我整整花了一天时间才编译成功。
编译需要用到的环境:Android sdk,NDK,CYGWIN,当然还有JDK了,一般的Android环境都会有这个东西,不多说了。以上安装的各个部分都需要添加相应的环境变量到系统中。最好再建一个环境变量:NDK_PROJECT_PATH 指向MUPDF的源代码目录,如:F:\workspace\mupdf\android\
首先下载源代码,分两步:
首先获取工程源代码,先在电脑上安装GitHub
git clone git://git.ghostscript.com/mupdf.git
获取成功以后,还需要获取这个项目所需要用到的第三方库源代码
git submodule update --init
代码获取完成以后,需要在源代码目录生成一个generated目录,里面有一些.h文件,这一步非常关键,也是我在编译过程中遇到的最大的障碍根据官方网站的说明,需要用 make generate 命令来生成这个目录,这就需要安装cygwin 编译环境.可直接网上下载安装,需要特别注意的是 在安装cygwin时必需选择gcc和make相关的部分,否则无法执行 make命令,对新手来说,这一步非常重要,我就是在这里卡了很长时间,make总是不成功,提示说找不到命令,因为以前没有相关经验,所以卡了很长时间。gcc安装也是非常重要,把 gcc 编译c代码和c++ 代码的部分也都选上,否则即使有了make,也不能make成功。
执行make命令(执行make前,需要将cygwin路径加入到环境变量):
make generate
make成功以后,在源代码目录下面会生成generated 文件夹,内容如下图:
这一步成功完成后,编译就成功了一半。下面进行NDK编译,我用的NDK版本是R8B ,需要说明的是,经过我的摸索,并不是所有的版本的NDK都能编译通过,如果使用最新的NDKR8D的话会有非常多的警告。在源代码目录下找到local.properties.sample,改名为local.properties 做如下修改:
sdk.dir=C:\\Documents and Settings\\Administrator\\android-sdks\\platforms\\android-10 ndk.dir=C:\\android-ndk-r8b
分别是android sdk 路径和ndk 路径。这时,先不要执行NDK编译命令 ,在源代码目录的JNI文件夹下找到Application.mk文件,找到下面两行:
# If the ndk is r8b then workaround bug by uncommenting the following line #NDK_TOOLCHAIN_VERSION=4.4.3
意思是说如果使用ndk r8b编译需要取消注释NDK_TOOLCHAIN_VERSION=4.4.3 这一行,OK,照办,取消注释。这一步非常重要,我就是实现没仔细看这行,导致最后编译不通过。原因是不同版本的GCC,对命令的解释有差异,导致错误,这里就不深究了。下面正式开始NDK编译:
编译成功后,生成lib文件夹: 整个编译工作大功告成。 经过测试发现,MuPDF 1.2 与1.0相比做了非常大的改进,尤其是内存溢出问题得到了很好的解决。 博客园似乎不能上传附件,有需要so文件的同学私信联系我吧