开发环境:android studio3.0.1

由于项目的需要,要在安卓端实现pdf文件的预览功能,使用到了mupdf这个工具,记录下移植的过程。
首先我用的是已经编译好的so库文件,在github上面有,文件名为mupdf-android-master.zip,下载好解压后在src/main/jniLibs得到如下文件。
在这里插入图片描述
将这三个文件夹复制到你新建的工程项目的app/libs目录下,如果没有这个目录的自己建一个。复制好后如下图所示。
在这里插入图片描述
接着在你的build.gradle文件里添加如下内容:

task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {
    destinationDir file("$projectDir/libs")
    baseName "Native_Libs2"
    extension "jar"
    from fileTree(dir: "libs", include: "**/*.so")
    into "lib"
}
tasks.withType(JavaCompile) {
    compileTask -> compileTask.dependsOn(nativeLibsToJar)
}

点击build/Make Project,成功后在libs目录下会生成Native_Libs2.jar文件。
在这里插入图片描述
接着在项目中新建一个包,包名为com.artifex,再在该包下新建两个包,包名为mupdfdemoutils包名一个字都不能错,如果新建的包名不一样,后面会提示UnsatisfiedLinkError错误。建好后的包需和下图一样:
在这里插入图片描述
然后回到刚刚解压文件夹,把src/main/java/com/artifex下的两个文件夹里的文件全部复制到上面建好的两个包里。
在这里插入图片描述
再把src/main/res下的所有文件复制到你的项目的res文件夹下,复制时会有提示说有几个文件已存在是否覆盖?如果你项目是刚建好的可以直接覆盖,否则选择全否,不然你原来的文件会丢失。在这里插入图片描述
最后就可以直接调用MuPDFActivity实现预览了。

Uri uri = Uri.parse(filename);
Intent intent = new Intent(MainActivity.this,MuPDFActivity.class);
intent.setAction(Intent.ACTION_VIEW);
intent.setData(uri);
startActivity(intent);

上张效果图
在这里插入图片描述

如果复制res时没有选择覆盖原文件,那么需要选择性地复制压缩包里values/color.xml和values/string.xml里的内容到你项目文件中。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐