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


我有一个 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文件夹下,所有的字符串都被识别出来了。

https://stackoverflow.com/questions/17103601/

相关文章:

c# - TFS 构建测试结果

c++ - 构建 Boost 动态可链接会导致链接错误?

java - 如何使用命令行在 Linux 下使用 Java 构建 OpenCV?(将在 MapRe

xcode - 使用运行脚本时更新 Xcode 构建进度条

visual-studio - 在构建期间无法自动将 NuGet 包更新到最新版本

iphone - 在 Xcode 中将build设置重置为默认值?

c++ - 如何让项目将其构建输出与 Scons 放在同一目录中?

linux - 下载 tar.gz 包时不支持的协议(protocol)

ios - 如何让 xcode 在依赖项之前运行脚本?

android - 错误 "cannot find -lrt"为 Android 构建 Boost