【问题标题】:including pre-built java classes into an android project将预构建的 java 类包含到一个 android 项目中
【发布时间】:2010-05-03 19:59:51
【问题描述】:

我正在尝试将一个 maven java 项目包含到我的 android 项目中。 maven 项目是 greader 非官方项目,它允许开发人员访问谷歌阅读器帐户,并处理所有 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 片段时......一些标准 jdk(我使用的是 1.6)中的 java.net 中的类不在 Android SDK 中。此外,当我编译一个应该非常简单的 maven 项目时,手动解决所有这些依赖项简直是荒谬的。

但是,我可以使用 maven 毫无问题地编译源代码。我如何将这个依赖于完整 jdk 的 maven 项目包含到我的 android 项目中,以便它可以编译,以便我可以从我的 android 项目中访问 GoogleReader 类?并且作为记录,我没有专业知识来重写整个 api 以使用标准 Android SDK。

【问题讨论】:

    标签: android eclipse maven java


    【解决方案1】:

    如果第三方库需要标准 JRE 类来编译,它可能也需要它们运行。尝试从您的构建中删除访问不可用 JRE 类的第三方方法/类。如果您的应用程序仍然可以使用精简的库,那么交付它(假设许可证与更改兼容。) 很可能,您对该第三方库的唯一其他选择是用变通方法替换有问题的 JRE 调用。

    【讨论】:

      【解决方案2】:

      不幸的是,在 M2Eclipse/maven 中使用 Eclipse 存在几个问题,最值得注意的是 ADT 没有将 JAR 文件依赖项打包到 APK 文件中

      幸运的是,我编写了一个插件来解决这些问题:

      https://code.google.com/a/eclipselabs.org/p/m2eclipse-android-integration/

      【讨论】:

        【解决方案3】:

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

        您可以通过将第三方库添加到 external-libs 来让 Android 构建注入第三方库的副本。但是我不知道将 JDK 的 rt.jar 文件放在那里(其中包含所有 java.net 类和其他所有内容)是否有效。您的应用将拥有标准 Java 库类的第二个副本,它们几乎肯定会在某些方面不兼容。

        我强烈怀疑它不会起作用,或者如果它碰巧,它会很脆弱。

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

        【讨论】:

        • 我基本上必须重做所有工作才能准确找出哪些依赖项给我带来了问题。 greader api 使用 jaxen (org.jaxen.*),它依赖于 dom4j (org.dom4j.*),它依赖于 java.beans 中的一些类,这些类不在 Android SDK 中,因此有问题的包是 jaxen 和 dom4j取决于 Android 中不可用的 JDK 部分。无论哪种方式,我都可以解决它。我会继续使用工具。谢谢你的建议。
        猜你喜欢
        • 2015-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-03
        • 2012-10-11
        • 2016-08-16
        • 2022-01-10
        • 1970-01-01
        相关资源
        最近更新 更多