如何使用ant构建带有外部库的Android应用程序?

时间:2010-03-17 19:36:38

标签: android ant

我有一个使用我的IDE构建的现有项目。我想使用“android update”命令为该项目生成一个ant构建文件。

构建文件生成正常,但构建失败,因为它没有构建我的libs目录中的一些jar文件。

我想弄清楚在libs目录中告诉ant使用一些外部jar文件构建的正确方法。我该怎么做?它是build.properties中的属性吗?我需要以某种方式修改build.xml吗?或者完全有不同的解决方案吗?

5 个答案:

答案 0 :(得分:32)

  

但构建失败,因为它不是   用我的一些jarfiles建造   我的libs目录。

你的错误信息是......什么?我怀疑你可能会错误地解释错误信息。

  

我想弄清楚正确的方法   告诉蚂蚁建立一些   我的libs中的外部jar文件   目录。我该怎么做?

只需将它们放在libs/中,因为Ant会将所有内容添加到您的构建路径中。有关示例,请参阅this projectthis projectthis project

答案 1 :(得分:14)

我花了一些时间试图让Facebook API与ant一起工作。我的诀窍是将它添加到我的default.properties文件中。

android.library.reference.1=../Facebook

其中../Facebook包含AndroidManifest.xml等。真正的关键是相对路径。不要使用绝对路径,因为Ant似乎将您的项目目录视为根目录。

对于您从源代码中包含的其他库项目,这应该适用。

答案 2 :(得分:8)

我正在处理类似的问题。我正在使用标准Ant build.xml(由Android SDK生成)在Jenkins上构建Android项目。我还引用了另一个带有一些共享域类的Java项目。在Eclipse中没有问题。域项目是项目引用。但是在Jenkins上,这个domain.jar是由Maven构建的,Android项目无法访问它。

我最终通过在build.xml的末尾添加它来解决它:

<target name="-pre-build">
  <copy todir="${jar.libs.dir}">
    <fileset 
      dir="../path-to-another-project/target" 
      includes="*.jar" />
  </copy>
</target>

这会将所有jar从另一个项目的目标目录复制到我的Android项目的“libs”目录中。在Android编译开始之前,会自动调用-pre-build Ant目标。

答案 3 :(得分:1)

我同意Mark,但是,如果您计划进一步修改构建脚本 - 那么您需要自定义它。将任务从android / platforms / android-PLATFORMVERSION / templates / android_rules.xml带到build.xml并修改你想要修改的内容。包括外部库的位置。

答案 4 :(得分:0)