android - 带有整数变量的 Gradle buildConfigField

标签 android variables gradle buildconfig android-buildconfig

我想定义一个构建配置文件,我可以在其中使用自己在 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/

    相关文章:

    java - 来自android的REST调用中的Class Cast Exception

    javascript - Android中如何调用JavaScript

    android - 如何在没有 wifi 的情况下处理我的 react-native (Android 4.4) 应用程序?

    来自数组值的 Javascript 动态变量名称 (Appcelerator Titanium)

    java - 使用 Gradle 将 Java 代码库编译为 10 和 8

    android - Facebook loginwithpublishpermissions 回调不工作

    variables - 在服务 worker (Firebase) 中设置变量 messagingSenderId

    java - 为什么 Java 编译器会提示局部变量没有在这里初始化?

    android - 当 Google Play 服务添加为依赖项时无法使用 gradle 构建

    java - 我需要采取哪些步骤才能将我的 Eclipse Android 项目转换为 Gradle 项目?