我正在尝试将maven java项目包含到我的android项目中。 maven项目是greader-unofficial项目,允许开发人员访问谷歌阅读器帐户,并处理所有的http事务和URI / URL构建,使谷歌阅读器的抓取源和项目对开发人员透明。该项目可在此处获取:
http://code.google.com/p/greader-unofficial/
代码最初是为标准jdk编写的,并使用java.net中不属于标准Android SDK的类。我实际上尝试手动解决所有依赖项并遇到问题,当我包括类be.lechtitseb.google.reader.api.util.AtomUtil.java所需的com.sun.syndication片段时... java.net中的标准jdk中的类(我使用的是1.6)不在Android SDK中。另外,当我编译一个应该非常简单的maven项目时,手动解析所有这些依赖项是非常荒谬的。
但是,我可以使用maven来编译源代码而没有任何问题。我如何将这个依赖于完整jdk的maven项目包含到我的android项目中,以便它能够编译以便我可以从我的android项目访问GoogleReader类?为了记录,我没有专业知识来重写整个api以使用标准的Android SDK。
答案 0 :(得分:0)
如果第三方库需要标准的JRE类进行编译,则可能还需要它们运行。尝试从构建中删除访问不可用的JRE类的第三方方法/类。如果您的应用程序仍然使用精简库,那么交付(假设许可证与更改兼容)。 可能,您对该第三方库的唯一其他选择是使用变通方法替换有问题的JRE调用。
答案 1 :(得分:0)
不幸的是,使用Eclipse和M2Eclipse / maven有几个问题,最值得注意的是ADT没有将JAR文件依赖包打包到APK文件中
幸运的是,我编写了一个插件来解决这些问题:
https://code.google.com/a/eclipselabs.org/p/m2eclipse-android-integration/
答案 2 :(得分:-1)
问题不在于构建/编译代码,对吧?正如你所说,它编译得很好。它直接或间接使用Android中不可用的类。 (并且,我确实强调即使它编译,也不意味着它将在Android上运行,因为它可能需要运行时不在Android中的类。)所以问题是将这些类放入你的.apk。
您可以让Android版本通过将第三方库添加到external-libs
来注入第三方库的副本。但是我不知道它只是把JDK的rt.jar
文件放在那里(它有所有java.net
类和其他所有类)。您的应用程序将拥有标准Java库类的第二个副本,这些类几乎肯定不会以某种方式兼容。
我强烈怀疑它不会起作用,或者如果它发生了,它将是脆弱的。
修改图书馆这么难吗?如果只有几个java.net
类不可用,可能在另一个问题中,您可以征求有关如何解决这些问题的想法。因为实际上根据我的经验,Android拥有所有java.net
类,所以我很想知道缺少什么。