2012-12-28 125 views
0

我有一個庫項目,作爲其他項目的後端。它執行網絡連接和解析等。然後我有其他前端項目建立在此基礎之上。 對於開發和服務器環境,我編寫了一個ANT構建腳本,用於替換構建類型代碼庫中的某些值。 所以我有兩個目標buildDevbuildProdAndroid庫項目自定義Ant構建

有沒有一種方法讓我在構建依賴項(非庫項目)時正確設置值。例如。如果我在項目上做ant debug,它會用ant buildDev構建後端,如果我做ant release,它會與ant buildProd這樣做。

我很肯定這不可能,所以有什麼選擇。

對於好奇心,自定義構建只是替換具有基於構建類型分配不同值的靜態變量的文件。沒有太複雜的。

回答

0

我找到了解決方案。默認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> 

然後,這只是一個在所有相互依賴項目中具有相同目標的問題。

1

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

我敢肯定,你知道的屬性文件,所以如果你用這裏的文檔:

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

它或許可以幫助你。

如果你在一個ant風格的屬性文件中設置你的變量,那麼對於某些構建,你可以爲單獨的構建分離文件,然後正確設置變量。

如果你在談論在你的源設置變量,嘗試複製任務:

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

在副本任務Filterchains將允許您更換某些代碼行出來的文件。所以如果你有一個名爲server_ip的變量或類似的東西,你可以使用一個過濾鏈來改變這個值,然後將這個源文件重新複製到你的樹中。

我希望這能回答你的問題。如果不是,請溫和。我在回答這些問題時有點新,而且我在Android的帖子上被稍微咀嚼了一下。

+0

我找到了解決方案。謝謝你的幫助。 –