我想建立幾個使用ant引用相同jar文件的android項目。我不想將jar文件複製到項目中的每個libs目錄(由於源控制樹的設置方式)。 answers I find這裏說「把它們放在libs目錄下」,它不能解決這個問題。如何在公用目錄(不是庫)中引用外部jar文件來使用ant構建android項目?
所以問題是,我該如何配置我的android ant構建腳本來引用項目之外的單獨目錄中的常見jar(而不是「libs」)?
我想建立幾個使用ant引用相同jar文件的android項目。我不想將jar文件複製到項目中的每個libs目錄(由於源控制樹的設置方式)。 answers I find這裏說「把它們放在libs目錄下」,它不能解決這個問題。如何在公用目錄(不是庫)中引用外部jar文件來使用ant構建android項目?
所以問題是,我該如何配置我的android ant構建腳本來引用項目之外的單獨目錄中的常見jar(而不是「libs」)?
在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
的值,因爲在本節之前會讀取該值,並且會使該值超載。指出你打算使用的通用目錄將會做你的建議。你可能需要玩一些才能讓它按你想要的方式工作。
一個警告是,我不確定這是否會對其他構建生命週期活動產生負面影響。
它看起來像新的SDK工具使這更容易完成。我有一個主libs文件夾,所有我的android項目共享,我只是將其添加到ant.properties
文件,使它查找這些庫的一個級別。
jar.libs.dir=../libs
如果你使用Linux,只要外部jar文件的符號鏈接,然後將它們全部libs
。螞蟻會正常工作。
編輯
直接所有符號鏈接,請在libs
(不子目錄)肯定的地方。我確信這可以通過ant腳本進行重新配置。但我不熟悉螞蟻:-)
根據問題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>
指向由所有其他項目共享UTIL項目也證實了工作,例如: jar.libs.dir = ../MyUtilAnd3rdPartyLibraryProject /庫 – user77115 2011-12-22 18:29:12
怪異..它不適合我的工作。我試圖呼應在編譯目標之前的'jar.libs.dir'值,它顯示'../ libs',但編譯仍然失敗。這在SDK Tools 21.0.1上。 – 2012-12-29 08:10:19
發現此問題併發布答案 – 2012-12-29 09:03:25