您的位置:首页 > 移动开发 > Android开发

MuPDF for Android编译过程小结

2015-12-10 19:06 399 查看
最近使用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_GPROOF
include $(CLEAR_VARS)
LOCAL_MODULE    := gsso
LOCAL_SRC_FILES := libgs.so
include $(PREBUILT_SHARED_LIBRARY)
endif


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

这次编译的源码我放在百度网盘上,大家有兴趣可以自己下载编译源码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: