簡體   English   中英

Android庫項目自定義Ant構建

[英]Android library project custom Ant build

我有一個圖書館項目,可以作為許多其他項目的后端。 它進行網絡連接和解析等。然后,我在此基礎上開發了其他前端項目。 對於開發和服務器環境,我編寫了一個ANT構建腳本,該腳本替換了基於構建類型的代碼中的某些值。 所以我有兩個目標buildDevbuildProd

在構建依賴項(非庫項目)時,有沒有辦法讓我正確設置值。 例如,如果我在項目上進行ant debug ,它將使用ant buildDev構建后端,如果我進行ant release ,則將使用ant buildProd進行后端ant debug

我很確定這是不可能的,那么還有哪些選擇。

出於好奇,自定義構建僅替換具有靜態變量的文件,該文件根據構建的類型分配了不同的值。 沒什么復雜的。

在ant中,可以使用多種不同的任務來編輯文件中的屬性。

我確定您知道屬性文件,因此如果您在此處使用文檔:

http://ant.apache.org/manual/index.html

它可能會幫助您。

如果您在ant樣式的屬性文件中設置變量,那么對於某些構建,您可以為單獨的構建使用單獨的文件,然后正確設置變量。

如果您要在源中設置變量,請嘗試復制任務:

http://ant.apache.org/manual/index.html

復制任務上的過濾鏈將使您可以替換文件中的某些代碼行。 因此,如果您有一個名為server_ip或類似名稱的變量,則可以使用過濾鏈更改該值,然后將該源文件重新復制回您的樹中。

我希望這回答了你的問題。 如果不是,請保持溫柔。 我在回答問題上有點新手,在Android帖子上我被略微咀嚼了哈哈。

我找到了解決方案。 默認的Android Ant build.xml在調用時將發布名稱傳遞給子庫項目腳本。 以下幾行和后面的代碼對其進行了詳細說明。

<!-- figure out which target must be used to build the library projects.
If emma is enabled, then use 'instrument' otherwise, use 'debug' -->
<condition property="project.libraries.target" value="instrument" else="${build.target}">
    <istrue value="${build.is.instrumented}" />
</condition>

然后,只需在所有相互依賴的項目中擁有相同的目標即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM