如何在通用目录(非libs)中引用外部JAR文件以使用ANT构建Android项目?

StackOverflow https://stackoverflow.com/questions/5312478

我想构建几个使用ANT引用相同JAR文件的Android项目。我不想将JAR文件复制到项目中的每个LIBS目录(由于如何设置源控制树)。这 答案寻找 在这里说“将它们放入LIBS目录中”,该目录无法解决此问题。

因此,问题是,如何配置我的Android Ant构建脚本以在项目外部单独目录中引用一个常见的jar(不是在“ libs”中)?

有帮助吗?

解决方案

在SDK中,有蚂蚁文件 tools/ant. 。在 main_rules.xml, ,您可以找到以下代码部分:

<!-- Directory for the third party java libraries -->
<property name="jar.libs.dir" value="libs" />
<property name="jar.libs.absolute.dir" location="${jar.libs.dir}" />
<!-- create a path with all the jar files, from the main project and the
     libraries -->
<path id="jar.libs.ref">
    <fileset dir="${jar.libs.absolute.dir}" includes="*.jar" />
    <path refid="project.libraries.jars" />
</path>

这就是蚂蚁构建代码确定从哪里获取罐子的方式。您可以超载的价值 jar.libs.dir 在您的build.properties中,既然在本节之前读取,并且会超载该值。指出您打算使用的通用目录将执行您的建议。您可能需要使用一些游戏才能按照您想要的方式进行工作。

一个警告是,我不确定这是否会对其他建立生命周期活动产生负面影响。

其他提示

看起来较新的SDK工具使这更容易完成。我有一个我所有的Android项目共享的Master Libs文件夹,我只是将其添加到 ant.properties 文件以使其为这些液体查找一个级别。

jar.libs.dir=../libs

根据问题 这里 我的回答取自 这里, ,到目前为止,提供的解决方案不起作用。直到修复了文件错误为止。如引用答案所述,该解决方案在下面复制。


我将其添加到我的 custom_rules.xml 模板,似乎正常工作。我认为这只比添加路径多几行 ant.properties 文件直到我们得到更好的解决方案。

<target name="-pre-compile">
    <path id="project.all.jars.path">
    <path path="${toString:project.all.jars.path}"/>
    <fileset dir="${jar.libs.dir}">
        <include name="*.jar"/>
    </fileset>
    </path>
</target>

如果您使用Linux,只需在外部JAR文件的符号链接中,然后将它们全部放入 libs. 。蚂蚁会正常工作。

编辑

确保将所有符号链接直接放在 libs (不是子目录)。我敢肯定,这可以通过ANT脚本重新构成。但是我不熟悉蚂蚁:-)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top