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

emm*_*mby 18 ant android

我有一个使用我的IDE构建的现有项目.我想使用" android update "命令为这个项目生成一个ant buildfile.

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

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

Com*_*are 32

但是构建失败了,因为它没有构建我的libs目录中的一些jar文件.

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

我想弄清楚在我的libs目录中告诉ant使用一些外部jar文件构建的正确方法.我该怎么做?

只需将它们放入libs/,因为Ant会将所有内容添加到构建路径中.请参阅此项目,此项目以及此项目的示例.


小智 14

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

android.library.reference.1=../Facebook
Run Code Online (Sandbox Code Playgroud)

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

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


pet*_*syn 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>
Run Code Online (Sandbox Code Playgroud)

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

  • 您应该将custom_rules.xml添加到与build.xml相同的目录中,而不是更改build.xml.将-pre-build目标放在那里,build.xml将自动导入它.custom_rules.xml可以包含所有前置和后置构建操作 (6认同)