Как указать 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
в вашем приложении и используйте значения.