㈠ 如何用maven-bundle-plugin在bundle中嵌入内部JAR包
部署时从maven库中找到这个jar包,然后直接放到Felix的bundle目录,启动Felix,就可以看到这个jar包作为一个独立bundle已经启动,其他bundle就可以通过直接Import-Package的方式来引用这些包。的之所以能够这么做是因为这个jar已经osgi化了,查看jar包中的META-INF/MENIFEST.MF文件,只要其中有Bundle-SymbolicName: org.apache.commons.io等一系列Bundle-*的属性值,并且有Export-Package导出内部的包就可以确定。现在大部分从maven库中获得的比较新的jar包,基本上都已经支持OSGI了。如果一个jar包确实不包含OSGI信息,也可以通过手动编辑它的MENIFEST.MF文件增加OSGI信息,来实现这个jar包独立作为bundle运行。例如json-20090211.jar,直接编辑它的MENIFEST.MF
1.下载 MuPDF 1.2 Source:http://code.google.com/p/mupdf/downloads/detail?name=mupdf-1.2-source.zip&can=2&q=
2.编译准备和过程:参考http://www.mupdf.com/doc/how-to-build-mupdf-for-android
3.把../platform/android工程导入Eclipse,运行,界面如下。<如在模拟器上运行apk,最好先把一个pdf文件导入>
上面的工程源码CSDN资源下载:http://download.csdn.net/detail/hhbgk/5711295
㈢ MuPDF怎么在windows环境下编译
git submole update --init代码获取完成以后,需要在源代码目录生成一个generated目录,里面有一些.h文件,这一步非常关键,也是我在编译过程中遇到的最大的障碍根据官方网站的说明,需要用 make generate 命令来生成这个目录,这就需要安装cygwin 编译环境.可直接网上下载安装,需要特别注意的是在安装cygwin时必需选择gcc和make相关的部分,否则无法执行 make命令,对新手来说,这一步非常重要,我就是在这里卡了很长时间,make总是不成功,提示说找不到命令,因为以前没有相关经验,所以卡了很长时间。gcc安装也是非常重要,把 gcc 编译c代码和c++ 代码的部分也都选上,否则即使有了make,也不能make成功。
执行make命令(执行make前,需要将cygwin路径加入到环境变量):
make generate
make成功以后,在源代码目录下面会生成generated 文件夹,内容如下图:
这一步成功完成后,编译就成功了一半。下面进行NDK编译,我用的NDK版本是R8B ,需要说明的是,经过我的摸索,并不是所有的版本的NDK都能编译通过,如果使用最新的NDKR8D的话会有非常多的警告。在源代码目录下找到local.properties.sample,改名为local.properties 做如下修改:
sdk.dir=C:\Documents and Settings\Administrator\android-sdks\platforms\android-10
ndk.dir=C:\android-ndk-r8b
分别是android sdk 路径和ndk 路径。这时,先不要执行NDK编译命令 ,在源代码目录的JNI文件夹下找到Application.mk文件,找到下面两行:
# If the ndk is r8b then workaround bug by uncommenting the following line
#NDK_TOOLCHAIN_VERSION=4.4.3
意思是说如果使用ndk r8b编译需要取消注释NDK_TOOLCHAIN_VERSION=4.4.3 这一行,OK,照办,取消注释。这一步非常重要,我就是实现没仔细看这行,导致最后编译不通过。原因是不同版本的GCC,对命令的解释有差异,导致错误,这里就不深究了。下面正式开始NDK编译:
整个编译工作大功告成。