How do I reference external jar files in a common directory (not libs) to build android project using ant?

做~自己de王妃 提交于 2019-11-26 22:23:20

问题


I would like to build several android projects that reference the same jar files using ant. I do not want to copy the jar file to each libs directory in the project (due to how the source control tree is set up). The answers I find here say "put them in the libs directory" which does not solve this problem.

So the question is, how do I configure my android ant build scripts to reference a common jar in a separate directory outside the project (not in "libs")?


回答1:


In the sdk, there are ant files under tools/ant. In main_rules.xml, you can find the following code section:

<!-- 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>

This is how the ant build code determines where to get the jars from. You could overload the value of jar.libs.dir in your build.properties since that is read before this section and would overload the value. Pointing that at a common directory you intend to use will do what you are suggesting. You may need to play with it some to get it to work the way you want.

One caveat is that I'm not sure if this will negatively impact other build life cycle activities.




回答2:


It looks like the newer sdk tools make this easier to accomplish. I have a master libs folder that all my android projects share and I just added this to the ant.properties file to make it look up one level for those libs.

jar.libs.dir=../libs



回答3:


As per the question here and my answer taken from here, the offered solution does not work as of now. Until the filed bug is fixed. The solution, as mentioned in the referenced answer, is copied below.


I add this to my custom_rules.xml template and it seems to be working fine. I supposed it's only a few more lines than adding path to the ant.properties file until we get a better solution.

<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>



回答4:


If you use Linux, just make symbolic links of the external jar files, then place them all in libs. Ant will work fine.

Edited

Make sure place all symbolic links directly in libs (not sub directories). I'm sure this can be re-config by ant script. But I'm not familiar with ant :-)



来源:https://stackoverflow.com/questions/5312478/how-do-i-reference-external-jar-files-in-a-common-directory-not-libs-to-build

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!