使用Ant构建Android项目并包含依赖库

5
我有两个Android项目,一个共享库和一个应用程序。现在我想将应用程序编译成依赖于该库的形式。在Eclipse中,这很好地实现了。之后,我通过git上传到我的存储库,并触发Jenkins构建两个项目。
我的问题是,出现了错误:“sdk/android-sdk-linux/tools/ant/build.xml:440:../shared-lib解析为没有项目属性文件的路径”。这很清楚,因为在Jenkins中,作业的存储方式与Eclipse下不同。
另一个问题是,Eclipse将共享库编译为“.jar”,而Ant将其编译为“classes.jar”(在sdk/android-sdk-linux/tools/ant/build.xml中命名)。

我不太明白这个问题。你能否同时包含Ant脚本(或其中的一部分)以及生成它的方式(如果有的话)? - Boris Strandjev
我正在使用由Android创建的build.xml进行update-project,我的_project.properties_包括android.library.reference.1=../shared-lib。你需要其他文件吗? - mars3142
2个回答

4

Ant脚本应该允许您包含所需的任何文件。在您的情况下,我建议您将对shared-lib的引用移动到local.properties文件中(此文件还应该由update-project生成的ant脚本读取)。在存储库中保留适当的路径以供Jenkins使用,并在本地构建时修改该文件。在存储库中的文件中,您需要有类似以下内容的内容:

android.library.reference.1=../classes.jar 

编辑 顺便说一下,第二个属性文件的建议只是因为该文件真的是用来存储特定位置属性的。


我该怎么做才能在post-build环境下将classes.jar复制到我的build.xml中的libs文件夹中呢?我认为这是更明智的方式。 - mars3142
1
这里有一个ant复制命令,你可以在这里看到:http://ant.apache.org/manual/Tasks/copy.html。不过,你也可以很容易地将额外的jar包添加到构建路径中。我不知道你对ant的了解程度,但这应该在网络上相对容易找到。如果你需要帮助,请回信告诉我。 - Boris Strandjev
我可以尽力帮助你,但现在我需要赶我的公交车 :) - Boris Strandjev
根目录应该是带有 build.xml 的目录。我不太明白为什么复制对你不起作用,但如果你确信如此,你可以在 Jenkins 环境和本地环境中提供不同的属性文件。 - Boris Strandjev
好的,我尝试更改 project.properties 文件。一开始似乎可以工作,但是在使用共享类的一个类之后,出现了故障。 - mars3142
显示剩余2条评论

1

我通过复制文件来解决了这个问题。第一个项目构建了我的shared-lib.jar。其他项目(手机和平板电脑)将此文件(shared-lib.jar)复制到它们的libs文件夹中并正确构建。但现在我在服务器和我的开发客户端上有不同的projects.properties文件。这个文件没有被提交到git。


你能解释一下你是如何使用Ant或Jenkins在构建服务器上复制文件的吗?我对Ant完全不熟悉,所以请不要担心讲得太简单。 :) - Ginger McMurray
我在Ant中使用了复制任务。请参阅https://dev59.com/EWDVa4cB1Zd3GeqPcFCJ#mYPinYgBc1ULPQZFuSg4 - mars3142

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接