2011-03-15 83 views
13

我想建立幾個使用ant引用相同jar文件的android項目。我不想將jar文件複製到項目中的每個libs目錄(由於源控制樹的設置方式)。 answers I find這裏說「把它們放在libs目錄下」,它不能解決這個問題。如何在公用目錄(不是庫)中引用外部jar文件來使用ant構建android項目?

所以問題是,我該如何配置我的android ant構建腳本來引用項目之外的單獨目錄中的常見jar(而不是「libs」)?

回答

9

在sdk中有tools/ant下的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> 

這是螞蟻構建代碼如何確定從哪裏得到的罐子。您可能會在您的build.properties中重載jar.libs.dir的值,因爲在本節之前會讀取該值,並且會使該值超載。指出你打算使用的通用目錄將會做你的建議。你可能需要玩一些才能讓它按你想要的方式工作。

一個警告是,我不確定這是否會對其他構建生命週期活動產生負面影響。

7

它看起來像新的SDK工具使這更容易完成。我有一個主libs文件夾,所有我的android項目共享,我只是將其添加到ant.properties文件,使它查找這些庫的一個級別。

jar.libs.dir=../libs 
+0

指向由所有其他項目共享UTIL項目也證實了工作,例如: jar.libs.dir = ../MyUtilAnd3rdPartyLibraryProject /庫 – user77115 2011-12-22 18:29:12

+0

怪異..它不適合我的工作。我試圖呼應在編譯目標之前的'jar.libs.dir'值,它顯示'../ libs',但編譯仍然失敗。這在SDK Tools 21.0.1上。 – 2012-12-29 08:10:19

+0

發現此問題併發布答案 – 2012-12-29 09:03:25

-2

如果你使用Linux,只要外部jar文件的符號鏈接,然後將它們全部libs。螞蟻會正常工作。

編輯

直接所有符號鏈接,請在libs(不子目錄)肯定的地方。我確信這可以通過ant腳本進行重新配置。但我不熟悉螞蟻:-)

3

根據問題here和我的答案取自here,所提供的解決方案目前無法正常工作。直到提交的錯誤得到修復。如參考答案中所述,解決方案將在下面複製。


我把這個添加到我的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> 
相關問題