微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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个变体并排安装在单个设备上,并在应用程序抽屉/启动器中给出不同的名称.

原文地址:https://www.jb51.cc/android/311706.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐