Android 调试和生产资源

Android 调试和生产资源,android,debugging,android-resources,Android,Debugging,Android Resources,一些Android库,例如,将资源用于配置目的(例如,ga_trackingId) 在这些情况下,对于调试和生产,我有不同的值。我现在做的是在调试时手动注释产品值,反之亦然。看起来是这样的: <?xml version="1.0" encoding="utf-8"?> <resources> <!-- DEBUG --> <string name="ga_trackingId">UA-12345678-1</string&g

一些Android库,例如,将资源用于配置目的(例如,
ga_trackingId

在这些情况下,对于调试和生产,我有不同的值。我现在做的是在调试时手动注释产品值,反之亦然。看起来是这样的:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!--  DEBUG -->
    <string name="ga_trackingId">UA-12345678-1</string>
    <integer name="ga_dispatchPeriod">1</integer>
    <bool name="ga_debug">true</bool>

    <!--  PRODUCTION -->    
    <!--string name="ga_trackingId">UA-87654321-1</string>
    <integer name="ga_dispatchPeriod">120</integer>
    <bool name="ga_debug">false</bool-->
</resources>

UA-12345678-1
1.
真的
这种切换配置的方式既单调又容易出错,如果我不小心,就会产生不必要的存储库更改。有更好的办法吗


(例如:在iOS上,我对
IF DEBUG
宏使用条件编译)

我对谷歌地图键也有类似的问题,它们依赖于签名。我所做的是使用ant脚本,它有条件地生成/复制资源到项目中。您可以在Eclipse中的Project>Properties>Builders下包含ant脚本

如果需要在代码中使用DEBUG值,可以创建一个包含静态值的java文件,该静态值也将有条件地包括在内

请说明ant环境变量是否正常工作(执行脚本后,您可以在控制台中看到“Build type:”消息)


src
文件夹下,您可能有一个
main
文件夹,用于存储所有共享内容。但是你可以为口味或构建类型提供特定的资源

将名为
debug
的文件夹放在
src
文件夹下,您将在其中放置xml文件的副本,但内容正确。您必须在
debug
下维护文件夹结构,因此需要将
global_tracker.xml
放在
。/src/debug/res/xml

您的文件夹结构应如下所示:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!--  DEBUG -->
    <string name="ga_trackingId">UA-12345678-1</string>
    <integer name="ga_dispatchPeriod">1</integer>
    <bool name="ga_debug">true</bool>

    <!--  PRODUCTION -->    
    <!--string name="ga_trackingId">UA-87654321-1</string>
    <integer name="ga_dispatchPeriod">120</integer>
    <bool name="ga_debug">false</bool-->
</resources>

Android Studio会发现这个xml文件有多个版本

这是您应该在中看到的:


您可以将其用于所有类型的资源,例如,具有同一文件的多个版本,并且它将被“神奇地”正确选择。

类似
res/values debug
的内容将非常棒。这是正确的答案。