2010-03-17 59 views
18

我有一个现有的项目,使用我的IDE构建良好。我想使用“android update”命令为这个项目生成一个ant构建文件。如何使用ant建立外部库的Android应用程序?

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

我想找出正确的方式告诉ant与我的libs目录中的一些外部jar文件构建。我应该怎么做?它是build.properties中的属性吗?我需要修改build.xml吗?或者是否有完全不同的解决方案?

回答

32

,但因为它不是 建筑,一些jarfiles中我有我的 libs目录生成失败。

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

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

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

+1

啊,问题是,我的一个依赖是一个项目的依赖,而不是一个罐子依赖。我会解决这个问题。 – emmby

+0

感谢commonsware。如果你想刺探后续,我在这里有另一个问题:http://stackoverflow.com/questions/2466437/how-to-build-an-android-test-app-with-a -dependency-on-another-app-using-ant – emmby

+0

是的,我看到了一个。我不是Android测试框架的粉丝,所以我不知道那里的答案。抱歉! – CommonsWare

1

但是,如果您打算进一步修改您的构建脚本,那么我同意Mark的意见,而不是您需要将其定制。将任务从android/platforms/android-PLATFORMVERSION/templates/android_rules.xml传送到您的build.xml并修改您想要修改的任何内容。包括外部库的位置。

14

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

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

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

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

+0

非常有帮助!谢谢! – wallacer

+0

查看sdk示例中的TicTacToeLib&TicTacToeMain。并阅读README.txt文件。 – douyw

+1

这正是我所需要的答案,简要说明和切入点。 – gregko

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项目的“库”目录。 -pre-build Ant目标在Android编译开始之前自动调用。

+6

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

相关问题