【问题标题】:How do you specify buildConfigField in Gradle Java-library Project build script如何在 Gradle Java 库项目构建脚本中指定 buildConfigField
【发布时间】:2018-03-30 01:43:42
【问题描述】:

在我的 Android 项目中,我可以按如下方式指定 Gradle 常量:

buildConfigField 'Boolean', 'analyticsEnabled', 'false'

并像这样在我的 Android 应用程序中访问它们:-

public boolean isAnalyticsEnabled() {
        return BuildConfig.analyticsEnabled;
}

如何在 Java 库 Gradle 构建脚本中获得相同的功能?

更准确地说,我正在开发一个自定义注释处理器,作为我的 Android 应用程序所依赖的纯 Java 项目(库)。

我想在我的注释处理器可以访问的 Java Gradle 构建文件中定义常量。

如果可以的话,我该如何实现呢?

【问题讨论】:

  • 您找到解决方案了吗?我也在使用 Java 库模块。

标签: java gradle annotation-processor


【解决方案1】:

您可以使用these plugins 之一。例如。 de.fuerstenau.buildconfig:

build.gradle

plugins {
    id 'de.fuerstenau.buildconfig' version '1.1.8'
}

buildConfig {
    buildConfigField 'String', 'QUESTION', '"Life, The Universe, and Everything"'
    buildConfigField 'int', 'ANSWER', '42'
}

然后得到一个BuildConfig 类,如:

public final class BuildConfig
{
    private BuildConfig () { /*. no instance */ }

    public static final String VERSION = "unspecified";
    public static final String NAME = "DemoProject";

    public static final String QUESTION = "Life, The Universe, and Everything";
    public static final int ANSWER = 42;
}

如果您使用 Kotlin 并想生成 Kotlin 版本 BuildConfig,请查看 io.pixeloutlaw.gradle.buildconfigkt

如果不喜欢这个想法,可以做资源过滤:

build.gradle

processResources {
    expand project.properties
}

gradle.properties(这些值与project.questionproject.answer 相同):

question=Life, The Universe, and Everything
answer=42

src/main/resources/buildconfig.properties

question=${question}
answer=${answer}

然后只需在您的应用中将buildconfig.properties 读入Properties 并使用这些值。

【讨论】:

    猜你喜欢
    • 2015-05-04
    • 1970-01-01
    • 2015-03-07
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    相关资源
    最近更新 更多