Code Monkey home page Code Monkey logo

mupdfso's Introduction

MuPdfSo

Android 构建MuPdf 编译so库 并使用 MuPdf官网 MuPdfAndroid开发文档 本次使用版本 14

这篇文章记录编译mupdf-android-viewer库,打包成so库,并在项目中使用.请参考

#编译so库

  1. 首先还是获取mupdf-android-viewer库到本地,使库能够正常运行,并安装到手机上,看看效果。
git clone --recursive git://git.ghostscript.com/mupdf-android-viewer.git
  1. 生成必要文件

mupdf-android-viewer/jni/libmupdf 目录下执行 make generate命令。

➜  libmupdf git:(d63bd227) pwd
/Users/fengxing/openProject/mupdf-android-viewer/jni/libmupdf
➜  libmupdf git:(d63bd227) make generate
  1. 添加local.properties 文件 在工程跟目录下创建local.properties文件配置sdk,ndk路径
ndk.dir=/Users/fengxing/Library/Android/sdk/ndk-bundle
sdk.dir=/Users/fengxing/Library/Android/sdk
  1. cmake编译 在根目录执行make进行编译,如果编译成功,那so文件会生成在这里。 image.png

目录 mupdf-android-viewer/jni/build/intermediates/ndkBuild/debug/obj/local

#使用so库 现在我们已经得到了so库,现在我们就使用它。

  1. 创建新项目

创建一个新项目,项目的名字就叫MuPdfSo

  1. 导入so库 把编译的so库导入新项目中 image.png

在gradle中添加代码

defaultConfig {
        applicationId "cn.picc.com.mupdfso"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        ndk {
            // 设置支持的SO库架构

            abiFilters 'armeabi'
        }
    }
  1. 创建两个module 看mupdf-android-viewer的目录结构

image.png

可以看出来mupdf-android-viewer由三部分组成,

app:显示pdf lib:UI显示层 jni:MuPdf核心库

调用顺序: app-->lib库-->jni库<--> JNI <--> .h -->.c

我们也根据这个模式创建两个module

一个名字叫PdfSo,定义native方法的。 一个名字叫PdfUi,定义显示UI的。

#####PdfSo

首先来搞PdfSo这个module,PdfSo主要是定义了一些native,和c文件进行沟通,这里我们复制mupdf-android-viewer定义好的类。

image.png

com.artifex.mupdf.fitz这个包,整个全部复制出来,记住 是全部哦。放到PdfSo库中,类似这样。 image.png

因为c代码库中定义的包就这个com.artifex.mupdf.fitz 所以native也必须是这个包。 我们来看下c代码和h代码。

image.png

image.png

看到没 在c代码中有个pkg,这个就是咱们定义的报名,可以修改成我们的报名,就不需要使用他们的包明了。

.c文件可以修改报名,是因为 看图

image.png

是因为根据包名去找字段,但是.h中的字段是写死的,只改c代码的包名可能还会有问题。

好吧,那暂时先使用他们的包名。

PdfUi库

这个就简单了:把lib库的代码直接占过去就行

image.png

别忘了资源文件。

编译一下,也就是 包明的问题,分分钟解决。

在app主模块测试一下,可以使用了。。。。

特此记录。

自定义界面

目前我没有这方便需求。 简单显示就可以的 使用so库 api大小增加8m左右 如果需要自定义界面或者需要什么功能 源码都有了 自己搞把。。。。。。。。

其它PDF请参考

demo地址

mupdfso's People

Contributors

fengxing1234 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.