【问题标题】:How export jars from library project to referencing projects in Eclipse?如何将 jar 从库项目导出到 Eclipse 中的引用项目?
【发布时间】:2011-07-18 08:15:40
【问题描述】:

多个 Android 项目使用一个 Android 库项目。现在我在这个库项目中添加了一个 JAR(commons-lang.jar)。我想将这个 commons-lang.jar 导出到所有使用库项目的项目中。如果不将 jar 复制到所有引用项目,我无法让它工作。

到目前为止我做了什么:

  1. 在库项目文件夹层次结构中创建了一个名为 libs 的文件夹。
  2. 已将 JAR 复制到此 libs 文件夹。
  3. 在 Eclipse“Java 构建路径”中将此 JAR 添加到库项目中,并带有“添加外部 JAR...”。
  4. 在“订购和导出”选项卡上,选中 JAR 左侧的复选框以将其导出。
  5. 在“Android”页面上的引用项目上“添加”库项目。

似乎 commans-lang JAR 没有与库项目一起导出。我还需要在引用项目上创建 libs 文件夹,将相同的 JAR 添加到引用项目的构建路径中。之后一切正常,但 APK 确实包含该外部 JAR 两次。

我的方法有什么问题?我还需要做什么?

非常感谢。

【问题讨论】:

  • 您找到更好的解决方案了吗?这也让我发疯。
  • 没有。如果在库树中使用 Android 库,我想我会放弃它们。例如:lib1 用在 lib2 中,lib2 用在 proj1 中,lib1 也用在 proj1 中 --> 双倍大小!!!我也可以看到罐子。例如:在lib1中使用commons-io,在lib2中使用commons-io,在proj1中使用commons-io。如果在 proj1 中使用 lib1 和 lib2,则为三倍。

标签: java android eclipse


【解决方案1】:

我相信您所做的是转到 Eclipse > 首选项 > Java > 构建路径 > 用户库。然后,当您向其中添加 jar 文件时,我相信工作区中的所有项目都会自动在类路径中包含该 jar。

【讨论】:

  • 在这里不起作用。正如我所说,它是一个 Android 库 - 没有 JAR 文件。我现在确实有 3 次包含相同库的项目,并且将 APK 提升到令人难以置信的大小。
  • 这对我有用(不知道为什么它有意义,但它有效!)
【解决方案2】:

我使用 gson.jar 文件尝试了同样的事情。

  • 我将 gson jar 的副本放入 TestAndroidLib 项目并设置 Java 构建路径以包含它。
  • 我向 TestAndroidApp 添加了对此 TestAndroidLib 项目的引用。
  • 我不需要在应用项目中复制 gson jar 即可使用 Gson 类。
  • 我可以运行和调试应用项目。

我在app项目的项目属性中发现gson jar被添加为Android Dependencies的一部分,如下所示。您可能需要检查您的应用程序项目的属性->Java 构建路径->库->Android 依赖项,以查看您要使用的 jar 是否在那里可见。

似乎如果您在 Andoroid lib 项目中有正确设置构建路径的 jar 文件,则在使用 lib 项目的应用程序项目中不需要额外的构建路径设置。

【讨论】:

  • 问题是添加到Android Library项目的JAR被两次包含在目标Android项目中。上周我在一个新项目中遇到了同样的情况。将 JAR 添加到 Android 库项目,将库项目添加到目标项目并繁荣 - APK 大小增加了两倍 JAR 文件大小。这里是纯 Eclipse,最新的 SDK,没有花哨的 Maven,没有额外的(构建)工具。
【解决方案3】:

我会做什么:

从头开始(删除您因为这个问题而创建的所有项目引用和 jar 引用)。创建一个新的 Android 库项目。将 jar 放入该项目的 libs 文件夹中。让所有需要 jar 的项目引用库项目。这应该可以。

【讨论】:

  • 这行得通,但有一点需要注意:你不能将 Javadoc / Source 附加到 jar 中,它变得不可修改。
【解决方案4】:

我很好奇您“订购和出口”时实际发生的情况。听起来您要引入 jar 两次,因为您使用“添加外部 jars - 这是修改项目根目录下的 .classpath 文件”添加的外部引用,并且使用的任何构建工具都会自动假设您的 lib 文件夹也添加了。

艾丹的答案可能就是你所需要的。

还有其他几种方法可以附加这个通用语言 jar。

如果这是您控制并计划更改的代码,最好为该代码打开一个单独的项目,并将公共项目作为“必需项目”添加到构建路径中。您可以在 Java Build Path - Projects 选项卡中添加项目。这将依赖于您正在工作的当前项目,并允许对公共代码进行即时更改。

我看到下面关于 Android 库的评论。我不认为eclipse只允许用户库的jar。我记得几年前使用 Aidan 的建议为一些 Swing 应用程序设置了一些 dll。

对于我所做的小 Android 开发,我建立了一个 maven/android 模板来启动我的项目。如果您不使用 Maven,我相信还有一些其他插件会自动处理您的 Android 库依赖项,因此您不必担心。

【讨论】:

    猜你喜欢
    • 2013-04-14
    • 2014-11-15
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 2012-03-25
    相关资源
    最近更新 更多