android – 如何在build.gradle中获取资源值?

前端之家收集整理的这篇文章主要介绍了android – 如何在build.gradle中获取资源值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
resValue方法(或任何它被称为)允许您在buildTypes或productFlavors中设置资源值.是否有相应的方法获取由resValue设置的资源值?

似乎在buildTypes之前对productFlavors进行了评估,因此在buildTypes中设置的resValue优先.我想在调试版本中附加“调试”到应用程序名称,但是我需要获取在产品风格中设置的值才能附加到它.

编辑:我试过MarcinKoziński的建议使用一个变量,但所有的产品风格都在任何构建类型之前进行评估.因此,这不行:

android {
    String appName = ""

    productFlavors {
        Foo {
            appName = "Foo"
        }

        Bar {
            appName = "Bar"
        }
    }

    buildTypes {
        release {
            resValue "string","app_name",appName 
        }

        debug {
            resValue "string",appName + " Debug"
        }
    }
}

在buildTypes中,appName始终具有最后一个产品风格的值.所以在这个例子中,所有的构建都会收到名称“Bar”或“Bar Debug”.

基本上,我需要一个类似于applicationIdSuffix的resValueSuffix.显然没有这样的动物存在. com.android.application插件是否暴露了我可以用来实现这一点的任何东西?

解决方法

如果您只尝试设置App Label(或其他清单值),则可以使用清单占位符来解决此问题.
android {

    productFlavors {
        Foo {
             applicationId "com.myexample.foo"
             manifestPlaceholders = [ appName:"Foo"]
        }

        Bar {
             applicationId "com.myexample.bar"
             manifestPlaceholders = [ appName:"Bar"]
        }
    }

    buildTypes {
        release {
            manifestPlaceholders = [ appNameSuffix:""]
        }

        debug {
            manifestPlaceholders = [ appNameSuffix:".Debug"]
            applicationIdSuffix ".debug"
        }
    }
}

然后在您的Android清单中,您只需将这两个占位符用于您的应用程序名称(或其他值)

<application
        android:label="${appName}${appNameSuffix}"
        ...
 </application>

这允许您将所有4个变体并排安装在单个设备上,并在应用程序抽屉/启动器中给出不同的名称.

猜你在找的Android相关文章