我试图在Android 2.1上运行一个示例Preon应用程序,但没有走运。我想知道是否甚至可以在Android上运行Preon应用程序。使Preon框架Dalvik友好将有多困难?

Preon是一个Java库,用于以声明方式为比特流压缩数据构建编解码器。考虑使用JAXB或Hibernate,然后考虑由Wilfred Springer编写的二进制编码数据。

以下是我尝试在Android中运行使用Preon的简单应用程序时的发现:

Preon对Pecia有依赖性。 Pecia间接依赖于stax-api,Android不支持此功能。 Preon核心处理中是否使用了stax-api?我可以从Preon依赖项中排除stax-api吗?

在将pecia从依赖项中排除后(不知道后果),我发现preon带来了log4j.properties文件的多个副本。我建议将log4j.properties文件移动到preon和pecia项目的/ src / test / resources目录中,以避免将它们与类一起使用。

由于重复的log4j.properties文件,因此android-maven-plugin失败,并显示以下消息:

[INFO] java.util.zip.ZipException:重复条目:log4j.properties

[INFO] ----------------------------------------------- -------------------------

[INFO]建立失败

[INFO] ----------------------------------------------- -------------------------

[INFO]总时间:19.717秒

[INFO]结束于:太平洋标准时间2011年3月23日星期三14:30:55

[INFO]最终内存:7M / 62M

最佳答案

好吧,我会回答我自己的问题。可以在Android中使用Preon框架。但是,Preon不能立即使用。在进行以下更改后,我设法运行了示例应用程序:
1.我将所有log4.properties移至
他们的preon项目
对应的/ src / test / resources
目录。
2.消除对pecia的依赖。
3.在peon-binding中嵌入了来自pecia的以下接口:
DocumentElement.java
Documenter.java
Para.java
ParaContents.java
4. org.codehaus.preon.code.Codecs:
我注释了以下导入及其所有相关代码(在此更改后将无法编译的代码):
导入javax.xml.stream.XMLStreamException;
导入nl.flotsam.pecia.builder.ArticleDocument;
导入nl.flotsam.pecia.builder.base.DefaultArticleDocument;
导入nl.flotsam.pecia.builder.base.DefaultDocumentBuilder;
导入nl.flotsam.pecia.builder.html.HtmlDocumentBuilder;
导入nl.flotsam.pecia.builder.xml.StreamingXmlWriter;
导入nl.flotsam.pecia.builder.xml.XmlWriter;
5. org.codehaus.preon.codec.ObjectCodeFactory
注释掉:
/ * target.document(codec.getCodecDescriptor()。reference(CodecDescriptor.Adjective.THE,false));
* /

意见建议:

我建议重构preon代码,以使文档代码与运行时依赖项分开。

威尔弗雷德,如果您愿意,我可以为您的项目做贡献。

奥斯卡奖

10-05 19:02