有条件地读取另一个xml文件中的strings.xml值,例如manifest.xml

时间:2015-05-25 09:38:09

标签: android

简单的问题。 我得到了这个strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_id_prod">XXXXXXX</string>
    <string name="app_id_test">YYYYYYY</string>
    <string name="test_mode">YYYYYYY</string>
</resources>

清单文件需要阅读&#34; app_id_prod&#34;或&#34; app_id_test&#34;基于&#34; test_mode&#34;值可以说是TRUE或false。

关于如何做到这一点的任何想法?

编辑:像

这样的东西
<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >       
     <meta-data
        android:name="com.google.android.gms.games.APP_ID"
        if(!test_mode)
        <android:value="@string/app_id_prod" />
        else
         <android:value="@string/app_id_test" />
    <meta-data>
   ...
 </application>

1 个答案:

答案 0 :(得分:3)

使用Gradle Android插件资源合并和product flavors这样的变体。

例如,假设您有构建版本testprod。然后在@string/app_id下放置包含src/{test,prod}/res/values的资源文件(假设默认源路径),并在清单中将字符串引用为@string/app_id

(您可能不需要口味,可以使用debugrelease变体进行类似的变体。)