4

我有一个 Android 库项目 AndroidLib,它依赖于我的工作区 JavaLib 中的一个 Java 项目。

在 Eclipse 中,这是通过将 JavaLib 项目添加到 Java Build Path > Projects for AndroidLib 并将其设置为在Order and Export选项卡中导出来完成的,并且构建良好。

然而,在构建 AndroidLib 时,Ant 似乎并没有获得对 JavaLib 项目的依赖(我已经运行了 android update lib-project)。将此依赖项添加到我的 build.xml 的最佳方法是什么?

4

3 回答 3

3

我有同样的问题。我最终以一种非常骇人听闻的方式解决了它。

在 AndroidLib/build.xml 中(或者在 AndroidLib/custom_rules.xml 中更好),我定义了一个-pre-build构建 JavaLib 并将生成的 jar 复制到 libs/ 中的目标。我还定义了一个-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

于 2013-08-10T06:49:02.310 回答
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 的依赖/构建/任何系统并从中得到了毛骨悚然。啊,回到蚂蚁身上真是一种解脱……

于 2014-04-07T13:53:22.677 回答
0

我会回答我自己的问题:正确执行此操作的唯一方法是使用 Ant。

  1. 你需要一个合适的依赖管理系统。Maven 是您在这里唯一真正的选择。
  2. 您需要一个支持 Maven 的构建系统。我目前再次为此使用 Maven,因为当时它是唯一一个也支持 Maven 依赖项管理的成熟构建工具——现在(尽管适用于 Android 库项目,因为这些格式尚未最终确定)Gradle 应该是你的构建选择的工具。
于 2013-08-10T22:25:30.850 回答