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

标签 android build gradle android-resources


我有一个 android 应用程序,我想有不同的口味。具体来说,我希望有 2 种风格,每种风格使用不同的字符串(不同的 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'
        }
    }
}

这样做的结果是没有一个字符串被识别,出现以下类型的多个错误:

build FAILED :

error: Error: No resource found that matches the given name (at 'contentDescription' with value '@string/txt_addr').

我错过了什么吗? build.gradle应该是怎样的?

谢谢

最佳答案

解决办法是添加目录

values

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

关于android - 使用 gradle 为不同的应用程序风格使用不同的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17103601/

相关文章:

Android从可绘制的字符串中获取图像路径

android - 如何在自定义 ListView 中搜索

android - Espresso 点击 webView 按钮

android - 从 com.android.tools.build :gradle:3. 0.1 升级到 com.android.tools.build :gradle:3. 2.0

android - 从没有模型的单个字符串值格式化 JSON Body for Retrofit

android - 遵循Mapbox初学者教程会返回 “Manifest merger failed”错误

xml - Ant:scp 创建目录(如果不存在)

gradle - 有没有办法从build.gradle中获取依赖项的版本?

android - Gradle 找不到 'testDebug' 任务

plugins - 在自定义Gradle插件中对任务进行分组?