MuPDF for Android编译过程小结

来源:互联网 发布:java电商架构设计 编辑:程序博客网 时间:2024/04/28 13:11

最近使用mupdf在自己的app上用来打开pdf类型的文件,把自己编译的过程在这里做个小小的记录

源码下载

首先需要把mupdf的源码下载下来为后续编译出so文件做准备,这里推荐官方的下载地址MuPdf官网,里面提供了git地址,这里还推荐另一个地址GITHUB地址 GITHUB地址,而且GITHUB上还有比较详细的文档说明。

源码编译

在编译前,GITHUB上的文档说了我们还需要下载一份Mupdf的第三方库的代码,在当前目录切到刚刚下载的Mupdf根目录使用git下载第三方代码

下载完后会发现thirdparty目录下多了好些非空文件夹

这就证明下载成功了。
接着需要使用make命令来编译下这些c代码,此时需要linux的环境,或者在windows环境下安装cygwin,这里我使用Vmware 安装了centos linux虚拟机,进入mupdf的根目录,在上面进行make ,使用make generate命令


这下mupdf的代码基本算是可以为android所用了

编译生成apk

这里假设你已经安装好了android开发环境(包括java,sdk,ndk)并配置好了环境变量,ant在这里也需要下载并配置环境变量下-----木有的自行百度吧,这方面资料网上很多了。
首先进入到mupdf的android目录(mupdf/platform/android),不是在刚刚说的根目录了
命令行进入后使用ndk-build生成libmupdf.so文件


然后使用ant debug编译apk



最后一步,安装到手机里就ok了



Finally,编译成功了,要移植到自己的项目就把对应的so文件和代码拷贝过去就ok啦。


上面我们用的是ant编译,现在来用gradle编译试试看

报错了,编译不通过,看提示缺少jni/libgs.so文件,这个so文件又是哪里定义的呢,看看gradle 编译脚本里的编译代码
/*  This task builds the native part*/task buildNative(type: Exec,description: 'Compile JNI source via NDK') {    println('executing buildNative')    commandLine ndkBuildPath, '-C', file('.').absolutePath, 'SUPPORT_GPROOF=1'    //'NDK_PROJECT_PATH=build','APP_BUILD_SCRIPT=src/main/jni/Android.mk'//force using appropriate Makefile}


ndk-build 后面有个SUPPORT_GPROOF=1参数,这个参数的目的是什么呢,很简单,看到jni/core.mk就知道了
ifdef SUPPORT_GPROOFinclude $(CLEAR_VARS)LOCAL_MODULE    := gssoLOCAL_SRC_FILES := libgs.soinclude $(PREBUILT_SHARED_LIBRARY)endif

原来是为了导入一个libgs.so,这个so在GhostProof 在这里有提供下载,也提供了源码(但源码我一直下载不成功),将它下载下来后放到libs/目录下再来执行gradle assembleRelease 最终编译成功了得到了一个apk,具体到apk里会发现这个apk增加了一个可以给打开的pdf进行着色处理方面的功能,估摸着这个libgs.so就是为了这方面的准备吧,具体的我也没有去细探究了,有了解的可以提供点资料哈!

这次编译的源码我放在百度网盘上,大家有兴趣可以自己下载编译源码
0 0
原创粉丝点击