如何在通用目录(非libs)中引用外部JAR文件以使用ANT构建Android项目?
解决方案
在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脚本重新构成。但是我不熟悉蚂蚁:-)
不隶属于 StackOverflow