The MuPDF library in Android is based on JNI to access the native C library through a layer of Java classes. The MuPDF Java library provides platform independent (i.e. both Android and desktop Java) low level access to MuPDF functionality.
The MuPDF Java library does not provide any Android specific components or widgets -- build those yourself or use one of the example viewers as a start!
In order to use the MuPDF library in Android, you must thus add two components to your build system: the JNI library, and the Java library.
Setting up the MuPDF subproject
Set up your Android project as you wish, and then add the mupdf repository as a directory somewhere in your project. If you're using git, you can use a submodule:
$ git submodule add git://git.ghostscript.com/mupdf.git libmupdf $ cd libmupdf $ git submodule update --init
You can also unpack a release tarball archive in your source directory.
We'll assume you name the mupdf project directory 'libmupdf'.
Use your host compiler to run the 'generate' step in the mupdf project:
$ make -C libmupdf generate
Adding the JNI library
Add an NDK-build step to your project, using the Android.mk file from mupdf.
If compiling manually, set the appropriate variables yourself:
$ ndk-build \ APP_BUILD_SCRIPT=libmupdf/platform/java/Android.mk \ APP_PROJECT_PATH=. \ APP_PLATFORM=android-16 \ APP_OPTIM=debug \ APP_ABI=x86
If using gradle, add an externalNativeBuild section in the android section in the build.gradle file:
android { externalNativeBuild { ndkBuild { path 'libmupdf/platform/java/Android.mk' } } }
Adding the Java library
You'll also need to include the Java classes that bind to the JNI library.
If you're using ant, add the 'libmupdf/platform/java/src' directory to the list of source directories. For example, set the variables in an ant.properties file:
source.dir=src;libmupdf/platform/java/src java.source=1.7 java.target=1.7
If using gradle, add the 'libmupdf/platform/java/src' directory to the list of source directories in the build.gradle file:
android { sourceSets { main { java { srcDirs = [ "src/main/java", "libmupdf/platform/java/src" ] } } } }