android - 如何在构建时设置 strings.xml 值?

标签 android xml ant

我正在使用 Ant 构建我的 Android 应用程序,并希望在构建时设置我的 strings.xml 中的值之一。例如,我可以使用

<string name="app_name">MyApp-DEBUG</string>

使用调试版本,或者我可以使用

<string name="app_name">MyApp<string>

用于发布版本。这可能吗?

最佳答案

Ant 中有两个任务可以提供帮助:

首先是 <replace> .你给它一个包含可以被替换的参数的文件名,然后你给 任务这些参数的值。它在文件中替换它们。我不喜欢这个任务,因为它用于替换受版本控制的内容,如果您不小心,最终可能会无意间更改文件。

设置.xml
<settings>
     <properties>
          <property name="server" value="@SERVER@"/>
     </properties>'
</settings>
替换任务
 <replace file="settings.xml">
    <replacetoken token="@SERVER@"  value="google.com"/>
 </replace>

我见过很多版本控制存储库,其中替换文件的修订版 #3 是使用替换参数意外 checkin 的文件(直到下一个版本参数没有更改时才意识到这一点) .然后版本 #4 是版本 #2 的副本,后者具有替换参数。接下来是错误的版本 #5,然后是恢复文件的版本 #6,等等。

我的首选方法是将文件复制到另一个目录,然后使用 <filterset>/<filter>复制时更改文件的标记:

 <copy todir="${target.dir}"
    file="settings.xml">
    <filterset>
        <filter token="SERVER" value="google"/>
    </filterset>
  </copy>

两者都可以使用属性文件 而不是指定单独的标记。 <copy>/<filterset> pair 可以获取文件的 fileset 并立即替换一堆标记。 (注意不要将二进制文件传递给它!)。

关于android - 如何在构建时设置 strings.xml 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12084002/

相关文章:

android - 如何在滚动时更改图像大小视角?

android - 创建穿戴应用程序 XML : AAPT: error: attribute android:boxedEdges not found 时面临问题

java - 清理项目后出现 NoSuchMethodError

c# - 将 XML 部分反序列化为对象

.net - 如何避免 "The element ' x' in namespace 'x.xsd' has invalid child element 'Items' in namespace 'x.xsd' "?

linux - Ant:查找:缺少 `-exec' 的参数

基于os的Apache ant状况

java - Android Studio,如何动态更改对话框中的 View ,案例 : Retrofit onSuccess

java - 获取用户当前位置并在 Google map 中确定

Android:在 Activity 之间在远程服务器上保持 session Activity