我正在用Ant構建我的Android應用程序,並希望在構建時在我的strings.xml中設置其中一個值。例如,我可以用如何在構建時設置strings.xml值?
<string name="app_name">MyApp-DEBUG</string>
與調試版本,或者我可以用
<string name="app_name">MyApp<string>
一個發佈版本。這可能嗎?
我正在用Ant構建我的Android應用程序,並希望在構建時在我的strings.xml中設置其中一個值。例如,我可以用如何在構建時設置strings.xml值?
<string name="app_name">MyApp-DEBUG</string>
與調試版本,或者我可以用
<string name="app_name">MyApp<string>
一個發佈版本。這可能嗎?
有在Ant中兩個任務,可以幫助:
首先是<replace>。您給它一個文件名,其中包含可以替換的參數,並且您將<替換爲>任務這些參數的值。它將替換它們在文件中。我不喜歡這個任務,因爲它被用來替換受版本控制的東西,如果你不小心,你可以最終改變文件而沒有意義。
的settings.xml<settings>
<properties>
<property name="server" value="@[email protected]"/>
</properties>'
</settings>
更換任務
<replace file="settings.xml">
<replacetoken token="@[email protected]" value="google.com"/>
</replace>
我看過很多版本控制庫的地方被替換文件的修訂#3是與更換的參數文件的意外的檢入(和直到下一個版本的參數未發生變化時才能實現)。然後版本#4是具有替換參數的版本#2的副本。接下來是一個錯誤的版本#5,後面跟着一個版本#6,它恢復了文件,並且繼續。
我的優選的方法是將文件在複製到另一個目錄中,並使用<filterset>/<filter>令牌來改變文件的同時被複制:
<copy todir="${target.dir}"
file="settings.xml">
<filterset>
<filter token="SERVER" value="google"/>
</filterset>
</copy>
兩者都可以使用屬性文件而不是指定個人令牌。 <copy>/<filterset>
對可以取文件的文件集並一次替換一堆令牌。 (注意不要將它傳遞給二進制文件!)。
對於您的首選方法,該複製標籤的位置在哪裏?它是如何被調用的?什麼是target.dir? –
試試這個代碼,它爲我工作
<target name="app-name-debug">
<replaceregexp file="res/values/strings.xml" match='name="app_name"(.*)'
replace='name="app_name">MyApp-DEBUG<\/string>'/>
</target>
<target name="app-name-release">
<replaceregexp file="res/values/strings.xml" match='name="app_name"(.*)'
replace='name="app_name">MyApp<\/string>'/>
</target>
可能重複http://stackoverflow.com/questions/8607804/build-configuration-specific-resources-debug-vs-release和http:// stackoverflow.com/questions/3029819/android-automatically-choose-debug-release-maps-api-key/3828864 – sandrstar