2010-05-03 58 views
1

我试图在我的android项目中包含一个maven java项目。 maven项目是允许开发人员访问谷歌阅读器帐户并处理所有http事务和URI/URL构建的greader-非官方项目,使得来自Google阅读器的提要和项目对开发人员透明。该项目可以在这里找到:包括预构建的java类到Android项目中

http://code.google.com/p/greader-unofficial/

代码最初是为标准的JDK,并使用从java.net不属于标准的Android SDK的一部分课程。我实际上试图手动解决所有的依赖关系,并遇到了一个问题,当我得到包括com.un.syndication片断所需的类be.lechtitseb.google.reader.api.util.AtomUtil.java ...一些java.net中的标准jdk中的类(我使用1.6)不在Android SDK中。另外,当我编译一个非常简单的Maven项目时,手动解决所有这些依赖关系是很荒谬的。

不过,我可以使用Maven编译没有问题的来源。我怎么能包括这个maven项目,这是依赖于完整的jdk到我的android项目中,这样它会编译,以便我可以从我的android项目访问GoogleReader类?并且为了记录,我没有专业知识来重写这个完整的api来使用标准的Android SDK。

回答

0

如果第三方库需要标准的JRE类进行编译,它可能需要它们运行以及。尝试从构建中删除访问不可用JRE类的第三方方法/类。如果您的应用仍然可以使用精简库,然后交付(假设许可证与更改兼容)。 可能的情况下,您唯一的第三方库的其他选项是用替代方法替换违规的JRE调用。

-1

问题不是编译/编译代码,对吗?正如你所说,它编译得很好。它直接或间接使用Android中不可用的类。 (而且,我强调即使编译它也不意味着它会在Android上运行,因为它可能需要运行时不在Android中的类。)所以问题是将这些类放到.apk中。

您可以使用Android构建将它们添加到external-libs注入第三方库的副本。但是我不知道它的工作原理是把JDK的rt.jar文件(其中包含所有java.net类以及其他所有内容)。您的应用程序将拥有标准Java库类的第二个副本,几乎肯定不会以某种方式兼容。

我强烈怀疑它不会工作,或者如果它恰好,将是脆弱的。

正在修改库如此艰难?如果只有几个java.net类不可用,也许在一个单独的问题中,您可以征求关于解决方法而不使用它们的想法。因为实际上根据我的经验,Android有所有的java.net类,所以我很好奇缺少什么。

+0

我基本上不得不重做所有的工作要准确地找到其依赖关系是给我的问题。 greader api使用依赖于dom4j(org.dom4j。*)的jaxen(org.jaxen。*),这取决于java.beans中的一些不在Android SDK中的类,所以这些违规包是jaxen和dom4j for取决于Android中不可用的JDK部分。 无论哪种方式,我大概可以解决它。我会继续工具。感谢您的建议。 – moonlightcheese 2010-05-05 22:16:36