我不知道如何使用 cygwin 在 Windows 中执行此操作,因为我正在使用 Ubuntu 进行开发。但我认为程序应该是一样的。
- 在此处下载文件 mupdf-0.9-source.tar.gz:
http ://code.google.com/p/mupdf/downloads/list?q=source
- 下载文件 mupdf-thirdparty.zip
- 提取来源。默认情况下,它们将被提取到文件夹:mupdf-0.9/
- 将文件 mupdf-thirdparty.zip 解压到文件夹 mupdf-0.9/
- 构建项目 mupdf-0.9(对于 Windows,您应该使用 VS,因为它在自述文件中声明)
- 然后转到文件夹 mupdf-0.9/android/
- 运行 ndk-build
- 您可能会收到以下错误:
Compile thumb : mupdfthirdparty <= jbig2.c
In file included from /home/yury/programming/android/workspace/mupdf-0.9/android/jni/../../thirdparty/jbig2dec/os_types.h:53,
from /home/yury/programming/android/workspace/mupdf-0.9/android/jni/../../thirdparty/jbig2dec/jbig2.c:22:
/home/yury/software/android-ndk-r6b/platforms/android-8/arch-arm/usr/include/stdint.h:48: error: redefinition of typedef 'int8_t'
/home/yury/programming/android/workspace/mupdf-0.9/android/jni/../../thirdparty/jbig2dec/os_types.h:47: note: previous declaration of 'int8_t' was here
解决方法在这里解释:mupdf for android: ndk-build problem (error: redefinition of typedef....)
但是,您可以简单地注释文件/thirdparty/jbig2dec/os_types.h中类型定义的行
之后,您将收到两个库:一个是静态的,另一个是为您的 android 应用程序共享的。
StaticLibrary : libmupdfthirdparty.a
SharedLibrary : libmupdf.so
这是第一个问题的答案。在 android/Readme.txt 文件中也有一个很好的分步指南。
现在回答第二个问题。在 android 应用程序中,您可以找到测试项目。有3个文件:
- MuPDFActivity.java
- MuPDFCore.java
- PixmapView.java
只需复制项目中的最后两个文件。并查看 MuPDFActivity.java 中的示例,了解如何在活动中嵌入 mupdf 布局。在这个文件中,它是这样完成的:
PixmapView pixmapView;
//...
layout = new RelativeLayout(this);
//...
RelativeLayout.LayoutParams pixmapParams =
new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.FILL_PARENT,
RelativeLayout.LayoutParams.FILL_PARENT);
pixmapParams.addRule(RelativeLayout.ABOVE,100);
layout.addView(pixmapView, pixmapParams);
setContentView(layout);