我有一个Android库项目,AndroidLib,它依赖于我工作区中的Java项目JavaLib。
在Eclipse中,这是通过将JavaLib项目添加到Java 构建路径>来完成的。 AndroidLib的项目,并将其设置为在订单和导出标签中导出,并且构建正常。
然而,在构建AndroidLib时,Ant似乎没有获得对JavaLib项目的依赖(我已经运行了android update lib-project)。 将此依赖项添加到build.xml的最佳方法是什么?
答案 0 :(得分:3)
我遇到了同样的问题。我以一种非常黑客的方式解决了它。
在AndroidLib / build.xml中(或者在AndroidLib / custom_rules.xml中更好),我定义了一个构建JavaLib的-pre-build
目标,并在libs /中复制生成的jar。我还定义了一个-post-package
目标来删除复制的jar,否则Eclipse会感到困惑。
<property name="lib.javalib.project.dir" location="${basedir}/../JavaLib" />
<target name="-pre-build">
<subant buildpath="${lib.javalib.project.dir}" target="package" failonerror="true" />
<copy todir="${basedir}/libs" failonerror="true" verbose="true">
<fileset dir="${lib.javalib.project.dir}/target">
<filename name="javalib*.jar"/>
</fileset>
</copy>
</target>
<target name="-post-package">
<delete verbose="true">
<fileset dir="${basedir}/libs" includes="javalib*.jar" />
</delete>
</target>
这个解决方案远非令人满意,但它可以完成工作。
您会在那里找到类似的问题和答案:Android Ant Include Java Library projects
答案 1 :(得分:0)
我会回答我自己的问题:正确执行此操作的唯一方法是不使用Ant。
答案 2 :(得分:0)
我更改了build.xml以运行java项目的ant文件,然后将jar复制到libs文件夹:
<target name="-pre-compile">
<ant antfile="build.xml" dir="dependencies/JavaUtils" target="clean"/>
<ant antfile="build.xml" dir="dependencies/JavaUtils"/>
<copy todir="${jar.libs.dir}" failonerror="true" file="dependencies/JavaUtils/dist/Java-utils.jar"/>
<sleep seconds="3"/> <!-- Delay for the file to be recognized after the copy -->
</target>
这对某人有何帮助。
顺便说一句,我开始阅读有关Gradle的依赖/构建/任何系统的内容,并从中获得了它。啊,回到蚂蚁真是一种解脱......