Как указать buildConfigField в скрипте сборки проекта Java-библиотеки Gradle

В моих проектах для Android я могу указать константы Gradle следующим образом:

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

и получить к ним доступ в моем приложении Android, как это:-

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

Как получить такую ​​же функциональность в скрипте сборки Gradle библиотеки Java?

Чтобы быть более точным, я разрабатываю пользовательский процессор аннотаций как чистый Java-проект (библиотеку), от которого зависит мое Android-приложение.

Я хотел бы определить константы в моем файле сборки Java Gradle, которые доступны моему процессору аннотаций.

Если это возможно, то как мне этого добиться?

0 ответов

Вы можете использовать один из этих плагинов. Например 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.question а также project.answer):

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

src/main/resources/buildconfig.properties:

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

Тогда просто прочитайте buildconfig.properties в Properties в вашем приложении и используйте значения.

Другие вопросы по тегам