我正在用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