我想定义一个构建配置文件,我可以在其中使用自己在 gradle 脚本中定义的变量:
def someVar = 512
android {
...
buildConfigField 'int', 'SOME_INT_FIELD', someVar
}
但这会产生以下错误:
Error:(25, 0) Gradle DSL method not found: 'buildConfigField()'
Possible causes:
The project 'PROJECT' may be using a version of Gradle that does not contain the method. The build file may be missing a Gradle plugin.
我可以使用像这样的引号:
def someVar = 0
android {
...
buildConfigField 'int', 'SOME_INT_FIELD', '"' + someVar + '"'
}
但这会导致 BuildConfig
中的编译器错误// Fields from default config.
public static final int SOME_INT_FILED = "512";
所以现在我留在:
def someVar = 0
android {
...
buildConfigField 'String', 'SOME_INT_FIELD', '"' + someVar + '"'
}
并像这样使用它:
final int value = Integer.valueOf(BuildConfig.SOME_INT_FIELD);
有没有人有更好的解决方案或者我使用的 buildConfigField 有误?
(我也尝试将括号与上述任何可能性结合使用。)
最佳答案
我找到了解决方案,所以也许这个答案将来会对某人有所帮助。
def String globalVersionCode
defaultConfig {
applicationId "com.test.gradle.build"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "0.1"
globalVersionCode = versionCode
}
buildTypes {
release {
buildConfigField ("int", "DatabaseVersion", globalVersionCode)
}
}
现在在 java 中我可以获得 DatabaseVersion 变量:
public static final int DB_VERSION = BuildConfig.DatabaseVersion;
关于android - 带有整数变量的 Gradle buildConfigField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38524260/