Используйте различные ресурсы для различных приложений, используя gradle


У меня есть приложение для Android, и я хотел бы иметь разные вкусы. В частности, я хотел бы иметь 2 аромата и для каждого аромата использовать разные строки (разные файлы strings.xml) и, возможно, иметь разные значки.

Я попытался создать две папки в корневой папке проекта: flav1 и flav2 и использовал следующий 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'
        }
    }
}

Результатом этого является то, что ни одна из строк не распознается, получая несколько ошибок следующего типа:

build FAILED:

error: Ошибка: ресурс не найден, который соответствует указанному имени (at 'contentDescription' со значением '@string/txt_addr').

Я что-то упустил? Как должен быть build.gradle?

Спасибо

Ответ 1

Решением было добавить каталог

значения

в каждой соответствующей папке res, и все строки были распознаны.