MuPDF for Android编译过程小结
2015-12-10 19:06
399 查看
最近使用mupdf在自己的app上用来打开pdf类型的文件,把自己编译的过程在这里做个小小的记录
下载完后会发现thirdparty目录下多了好些非空文件夹
这就证明下载成功了。
接着需要使用make命令来编译下这些c代码,此时需要linux的环境,或者在windows环境下安装cygwin,这里我使用Vmware 安装了centos linux虚拟机,进入mupdf的根目录,在上面进行make ,使用make generate命令
这下mupdf的代码基本算是可以为android所用了
首先进入到mupdf的android目录(mupdf/platform/android),不是在刚刚说的根目录了
命令行进入后使用ndk-build生成libmupdf.so文件
然后使用ant debug编译apk
最后一步,安装到手机里就ok了
Finally,编译成功了,要移植到自己的项目就把对应的so文件和代码拷贝过去就ok啦。
上面我们用的是ant编译,现在来用gradle编译试试看
报错了,编译不通过,看提示缺少jni/libgs.so文件,这个so文件又是哪里定义的呢,看看gradle 编译脚本里的编译代码
ndk-build 后面有个SUPPORT_GPROOF=1参数,这个参数的目的是什么呢,很简单,看到jni/core.mk就知道了
原来是为了导入一个libgs.so,这个so在GhostProof 在这里有提供下载,也提供了源码(但源码我一直下载不成功),将它下载下来后放到libs/目录下再来执行gradle assembleRelease 最终编译成功了得到了一个apk,具体到apk里会发现这个apk增加了一个可以给打开的pdf进行着色处理方面的功能,估摸着这个libgs.so就是为了这方面的准备吧,具体的我也没有去细探究了,有了解的可以提供点资料哈!
这次编译的源码我放在百度网盘上,大家有兴趣可以自己下载编译源码
源码下载
首先需要把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就是为了这方面的准备吧,具体的我也没有去细探究了,有了解的可以提供点资料哈!
这次编译的源码我放在百度网盘上,大家有兴趣可以自己下载编译源码
相关文章推荐
- android项目启动应用,卸载应用,分享
- android 手机虚拟按键 震动过程的追溯(1)
- 【常用工具类】验证码倒计时帮助类的实现
- android:launchMode的参数含义
- Android 模糊效果
- Android四大组件之Service详解
- Android知识点总结:Android选取、拍照与裁剪图片相关流程分析
- Android之Android apk动态加载机制的研究
- Android类动态加载技术
- android中使用csv文件来存储数据中遇到的几个问题
- Android 4层框架
- android 三种点击事件
- Android学习第四天————ListView用BaseAdapter适配器来填充数据
- Android 操作系统的内存回收机制
- Android ViewPager+HorizontalScrollView实现标题栏滑动(腾讯新闻)
- 安卓数据库activeandroid框架
- Android基础-数据库SQLite
- 更强的微光闪烁效果--第三方开源--Shimmer-android
- android listview的使用(零)
- android中的hashmap使用