[英]Android library project custom Ant build
我有一個圖書館項目,可以作為許多其他項目的后端。 它進行網絡連接和解析等。然后,我在此基礎上開發了其他前端項目。 對於開發和服務器環境,我編寫了一個ANT構建腳本,該腳本替換了基於構建類型的代碼中的某些值。 所以我有兩個目標buildDev
和buildProd
。
在構建依賴項(非庫項目)時,有沒有辦法讓我正確設置值。 例如,如果我在項目上進行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.