Lucene4引入了编解码器(codec)机制,搜索过程中会通过反射机制加载对应的codec类,相关反射信息存储在JAR包的META-INF/services目录中。然而,在Android平台使用apkbuilder打包应用时,会自动移除第三方JAR包中的META-INF文件夹。由于该目录被删除,导致Lucene4所需的codec加载信息丢失,进而无法正确加载相应的编解码器类,最终引发功能异常。这一问题在Android环境下尤为明显。相比之下,Lucene3未采用此类基于服务发现的机制,因此不受此影响,能够在Android平台上正常运行,不存在类似的兼容性问题。
1、 用apkdb工具对apk进行修改。
2、 将Lucene中META-INF目录下的services文件夹复制到APK的originalMETA-INF目录中即可完成操作。
3、 可修改Lucene源码,调整META-INF/services目录下的配置路径以实现自定义功能。
评论
更多评论