在Multi Flavor应用程序中,如何避免重复资源

时间:2016-02-08 17:08:36

标签: android android-gradle android-productflavors android-flavordimension

如果我有3种风味1,风味2和风味3,每种风味都有Dev,Pat和Prod"亚风味"不同参数的版本,但每种主要风味都有不同的资源。

所以我现在有9种不同的口味,但只有3种不同的资源文件夹)。我想要同样的"子口味"使用相同的资源。

我该怎么做?我在文档中看到了关于flavorDimensions但不确定如何配置资源文件夹。

目前我正在使用像

这样的东西
sourceSets {

   flavor1_dev{
            res.srcDir  'src/flavor1/res'
        }

   flavor1_prod{
            res.srcDir  'src/flavor1/res'
        }

   flavor2_dev{
            res.srcDir  'src/flavor2/res'
        }

   flavor2_prod{
            res.srcDir  'src/flavor2/res'
        }

}    

2 个答案:

答案 0 :(得分:1)

你需要Gradle风味,例如。 flavor1flavor2等,以及devprod等构建类型。

请参阅以下示例:http://developer.android.com/tools/building/configuring-gradle.htmlhttp://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Sourcesets-and-Dependencies

例如:

android.sourceSets.flavor1Debug 位置src / flavor1Debug /

android.sourceSets.flavor1Release 位置src / flavor1Release /

android.sourceSets.flavor2Debug 位置src / flavor2Debug /

android.sourceSets.flavor2Release 位置src / flavor2Release /

此外,这个问题非常相似How can I specify per flavor buildType sourceSets?

答案 1 :(得分:-1)

将公共资源放在main / res中。主/ res中的所有资源都将被味道覆盖。 例如,如果要覆盖字符串资源add,

主要字符串文件:/src/main/res/values/strings.xml

<resources>
    <string name="app_name">Main</string>
    <string name="app_name_full">Main app</string>
    <string name="app_email">main@abc.com</string>
    <string name="app_phone">123</string>
    <string name="app_website">www.abc.com</string>
</resources>

和flavor字符串文件:/src/flavor1/res/values/strings.xml

<resources>
    <string name="app_name">Flavour App Name</string>
</resources>

只有app_name才会改变风味,其他资源如app_full_name仍然可以在所有风格中访问。