使用gradle为不同的应用程序风格使用不同的资源

时间:2013-06-14 07:48:32

标签: android build gradle android-resources


我有一个Android应用程序,我想有不同的口味。具体来说,我希望有两种口味,每种口味使用不同的字符串(不同的strings.xml文件),也许有一些不同的图标。

我尝试在项目的根文件夹中创建两个文件夹:flav1flav2并使用以下build.gradle

android {
    compileSdkVersion "Google Inc.:Google APIs:15"
    buildToolsVersion "17.0.0"

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        instrumentTest.setRoot('tests')
    }

    productFlavors {
        flav1 {
            packageName "com.ic.flav1"
        }

        flav2 {
            packageName "com.ic.flav2"
        }
    }

    android.sourceSets.flav2 {
        res {
            srcDir 'flav2'
        }
        resources {
            srcDir 'flav2'
        }
    }
    android.sourceSets.flav1 {
        res {
            srcDir 'flav1'
        }
        resources {
            srcDir 'flav1'
        }
    }
}

结果是没有识别出任何字符串,导致出现以下类型的多个错误:

  

建立失败:

     

错误:错误:找不到与给定名称匹配的资源(at   'contentDescription',其值为'@ string / txt_addr')。

我错过了什么吗? build.gradle应该怎么做?

由于

1 个答案:

答案 0 :(得分:9)

解决方案是添加目录

  


在每个相应的res文件夹下,所有字符串都被识别。