【问题标题】:How to export android library project as jar file that will contain it's own referenced library project's jar如何将 android 库项目导出为 jar 文件,其中将包含它自己的引用库项目的 jar
【发布时间】:2013-11-27 21:40:28
【问题描述】:

标题可能看起来令人困惑(尽管准确)。让我再解释一下:

我有一个 android Library 项目,我们称之为 ProjectA。我还有第二个 android Library 项目,我们称之为 ProjectB。 ProjectB 和 ProjectA 在同一个工作区中,并且 ProjectB 在其库列表(项目属性)中引用 ProjectA。所以 ProjectB 正在使用 ProjectA。

现在我想要完成的是获取一个简单的库 jar - ProjectB,并将这个 jar 作为外部库包含在我的另一个 android 项目(这次是 android 应用程序)中。

但是...当我编译 ProjectB 时,jar 太小(ProjectA 的 jar 超过 300KB,而 ProjectB 的 jar 只有 14KB),所以我确定它不包含我的 jar 文件中的 ProjectA在 bin 文件夹中找到(ProjectA 的)。简单算一下,ProjectB 的 jar 应该大 300KB。

重复一遍,我希望将库所需的一切都打包在一个 jar 文件(ProjectB 的 jar 文件)中,这样当我将它导入 Android 应用程序的库时,我可以使用它。

有经验的 Android 开发者帮忙吗?

【问题讨论】:

  • How to combine two Jar filesstackoverflow.com/questions/882204/…stackoverflow.com/questions/14350150/… 的可能副本以及更多。但请注意,如果该项目不包含资源,您只能创建一个简单的 Android 库项目的 JAR。
  • 据我所知,您提到的所有这些主题都涉及非android项目。据我所知,这些都是特殊处理的,因此我需要一个与 Android 应用程序项目和 Android 库项目相关的解决方案。我已经尝试过其他人提到的几个解决方案(在 java 相关项目中),但不适用于我上面解释的场景。
  • 由于您是从 Android 库项目手动创建 JAR,因此它们应该像任何其他 JAR 一样合并。除了手动创建之外,没有其他方法可以以可靠的方式从 Android 库项目中获取 JAR。而且,正如我之前提到的,如果您尝试将带有资源的 Android 库项目转换为 JAR,那是不可能的,更不用说您的合并目标了。
  • “并从它的 bin 文件夹中获取一个 jar”——这不是供您使用的。这仅适用于将库项目附加到托管应用程序时的 Ant/Eclipse 构建过程。它本身并不是一流的构建工件。因此,当该 JAR 可能没有按照您想要的方式运行时不要抱怨,如果将来不再为您保存该 JAR 也不要抱怨。如果您想要一个 JAR 文件,请自己制作一个。 JAR 文件已经存在了大约 15 年,网上有很多关于创建它们的说明。
  • “我理解正确吗?” - 是的。 “如果是,那么将几个罐子组合成一个罐子的说明......” - JAR 是一个 JAR,所以它应该可以正常工作。如果遇到问题,请在解释问题的地方发布一个 SO 问题。 “尤其是我提到的库项目”——一个无资源的 Android 库项目最终只是一个普通的 Java 项目,你碰巧在其中编译 android.jar 而不是来自 Java SE 的东西。图书馆项目只有在资源、清单合并等方面才能与众不同。

标签: android jar


【解决方案1】:

如果您正在寻找最快的方法来执行此操作,请在 Eclipse 中突出显示您的库项目,然后转到 File > Export 并在 Java 下选择 JAR。从那里,您可以选择多个选项,包括应将哪些其他引用的项目作为 JAR 的一部分导出。

Commonsware 是正确的,它只是一个 JAR,没有魔法。如果您需要构建系统选项,请考虑使用 Ant 或 Gradle 为您打包 JAR。但是,不要尝试使用 bin 文件夹中的内容,因为它不适合您使用。

【讨论】:

    【解决方案2】:

    您需要确保将库导出到您的构建路径中。对于 Eclipse,您可以右键单击项目,选择“构建路径”>“配置构建路径”,转到右侧的“订购和导出”选项卡,并确保您的库已在列表中选中(如果您的项目有多个依赖项,它可能包含在多个库组之一中)。

    【讨论】:

    • 我假设你的意思是在我的“ProjectB”中这样做,从上面的例子?如果是这样,我没有在那里列出 ProjectA,因为它是由项目引用的,而不是由外部 jar 引用的(请记住)。所以我的“ProjectA's” jar 列在“Android Dependencies”下,这些确实被检查为导出,但这仍然不包括 ProjectB 的 jar 中的 ProjectA 的 jar。
    猜你喜欢
    • 1970-01-01
    • 2013-05-14
    • 2016-01-13
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 2014-07-07
    • 2012-12-24
    相关资源
    最近更新 更多