【问题标题】:How to compile and jar an Android project using Ant?如何使用 Ant 编译和 jar 一个 Android 项目?
【发布时间】:2012-03-13 09:09:10
【问题描述】:

我正在尝试处理整个“Ant”构建系统的事情。我创建了一个 build.xml,Android 通过使用以下命令原生提供给我:android update project -p .

虽然这给了我一个模板 build.xml 文件,但我想要更多的选择。具体来说,我希望能够JAR和/或编译我的项目;最好带有版本号。

额外问题:如何从我的 JAR 构建中排除文件。例如,我有一个活动用于测试我的功能,但我不希望它包含在最终的 JAR 中。

Android 给我的 build.xml 文件是 Gisted here,因为它很长(主要是 cmets)。

编辑:我也在使用 IntelliJ,所以请不要使用 Eclipse 细节!

【问题讨论】:

  • 考虑到 Android 应用程序不是 JAR 文件,“JAR 并编译我的项目”是什么意思?
  • @CommonsWare,我的意思是两个“目标”。 1. 编译我的代码,使类和 dex 文件以及任何东西都在它们正确的目录中。 2. JAR 那些我想要的类文件,以便我可以适当地分发我的 Android“库”。
  • 此外,我应该澄清一下。我不知道我的项目是否符合“图书馆”项目的条件。但是我只有使用我想要 JARed 的 Android SDK 的代码,以便我可以在另一个应用程序中使用它。不是活动,只是其他代码。

标签: android ant build jar


【解决方案1】:

具体来说,我希望能够 JAR 和/或编译我的项目;最好有版本号。

在 Android 中,版本号用于应用程序,而不是 JAR。

话虽如此,添加jar 目标就是将其添加到您的build.xml 文件的底部:

<target name="jar" depends="debug">
    <jar
        destfile="bin/whatever-you-want-to-call-the.jar"
        basedir="bin/classes"
    />
</target>

然后,运行ant jar,编译打包JAR文件。

您将在my GitHub area 中的大多数可重用Android 组件中看到这种模式(请参阅cwac- 存储库)。

额外问题:如何从我的 JAR 构建中排除文件。例如,我有一个活动用于测试我的功能,但我不希望它包含在最终的 JAR 中。

使用excludesexcludesfile,如jar Ant task documentation 中所述。

【讨论】:

  • 完美。顺便说一句,excludes="**/ExcludedFile.class" 排除了您不喜欢的文件。 depends="debug" 是需要预编译的魔法。
  • @hwrdprkns 你能解释一下“需要预编译的魔法”是什么意思吗?您是说指定“depends='debug'”会强制 ant 在构建 jar 之前进行编译吗?编辑:实际上在阅读更多之后,这是否意味着当你调用“ant jar”时它意识到它需要先做“ant debug”?我假设我们使用调试而不是发布,因为我们不关心为 jar 签名?
【解决方案2】:

为了重用 Android 和非 Android 项目,我建议您查看 Android Maven 插件。它利用了依赖管理和 Maven 的其他强大功能,并且更适合您想要做的事情。

查看上面的webpage and documentation 以及我写的关于Android development in Maven : The Complete Reference 的章节,以便对 Maven 有更多的了解和了解一些东西。

Android 插件支持对普通 jar 工件的重用,如果代码中存在 Android 依赖项,您可以使用 apklib 项目。很多项目,如 Roboguice、robolectric、actionbarsherlock 等都成功地使用了这个功能。

【讨论】:

  • 不是问题所要求的,而是 +1,因为这看起来是一个很棒的工具,我应该了解。
  • 没问题.. 只是想把你从 xml 地狱中拯救出来,一旦你开始自定义 ant 构建,就会遇到很多升级的痛苦..
猜你喜欢
  • 2011-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-09
  • 2016-03-03
  • 2011-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多