可以在Gradle中声明一个在Java中可用的变量吗?

声明的一个例子是这样的…:

android {
    debug {
        A_VAR_RETRIEVABLE_IN_JAVA = 42
    }
    release {
        A_VAR_RETRIEVABLE_IN_JAVA = 42+52
    }
}

有没有办法做到这一点?

推荐答案

这里有两种方法可以将Gradle中的值传递到Java中使用;

生成Java常量

android {
    buildTypes {
        debug {
            buildConfigField "int", "FOO", "42"
            buildConfigField "String", "FOO_STRING", "\"foo\""
            buildConfigField "boolean", "LOG", "true"
        }

        release {
            buildConfigField "int", "FOO", "52"
            buildConfigField "String", "FOO_STRING", "\"bar\""
            buildConfigField "boolean", "LOG", "false"
        }
    }
}

您可以拨打BuildConfig.FOO访问它们

生成Android资源

android {
    buildTypes {
        debug{
            resValue "string", "app_name", "My App Name Debug"
        }
        release {
            resValue "string", "app_name", "My App Name"
        }
    }
}

您可以使用@string/app_nameR.string.app_name以常规方式访问它们

Java相关问答推荐

Java应用程序RAC感知

是否可以从@ TrustMapping中删除特定方法的基路径?

如何使用CSS为选定但未聚焦的表格行设置背景 colored颜色 ?

如何在返回bigint []值的子查询中使用any?

为什么Java的代码工作(if condition内部的实例)

如何使用AWS CLI从S3存储桶中的所有对象中删除用户定义的元数据?

通过Spring Security公开Spring Boot执行器端点

如何在Cosmos DB(Java SDK)中增加默认响应大小

如何在Spring Boot中创建可以将值传递给配置的&Enable&Quot;注释?

基于配置switch 的@Controller的条件摄取

有谁能帮我修一下这个吗?使输出变得更加整洁

如何在Java springboot中从一个端点发送多个时间响应?

Spring动态反序列化JSON可以是列表,也可以只是一个对象

在应用getCellFormula()时,Excel引用中的文件名始终为";[1]";使用Apache POI()

RestTemplate Bean提供OkHttp3ClientHttpRequestFactory不支持Spring Boot 3中的请求正文缓冲

我们可以在方法中声明接口吗?

如何在单元测试中获得我的装饰Mapstruct映射器的实例?

当我try 返回可选时,Mock无法正常工作

Spring Boot Security-每个端点都被403禁止,Spring记录一个BasicErrorController#错误(HttpServlet请求)

如何在更改分辨率时将鼠标坐标计算为世界坐标