【问题标题】:Use different resources for different application flavors using gradle使用 gradle 为不同的应用程序风格使用不同的资源
【发布时间】:2013-06-10 19:32:53
【问题描述】:


我有一个 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'
        }
    }
}

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

构建失败:

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

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

谢谢

【问题讨论】:

    标签: android build gradle android-resources


    【解决方案1】:

    解决办法是添加目录

    价值观

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

    【讨论】:

    • “资源”和“资源”有什么区别?我是来自 eclipse 的 AS 新手...我在我的项目中看到了该文件夹,但我不确定它的作用以及您将如何从每种口味的单独“资源”中受益?
    • 资源和资源是一回事。这只是 AS 使用的命名约定(“res”)。为每种风格拥有不同的资源将使您有机会为相同的资源 id 拥有不同的图像(例如,R.id.logo 可以是不同风格的不同图像)
    猜你喜欢
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 2017-06-26
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多