Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Gradle buildConfigField with integer variable

Tags:

I would like to define a build config filed where I can use a variable defined in the gradle script it self:

def someVar = 512 android { ...     buildConfigField 'int', 'SOME_INT_FIELD',  someVar } 

But this produces following error:

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.

  • I could use quotes like:

    def someVar = 0 android { ...     buildConfigField 'int', 'SOME_INT_FIELD',  '"' + someVar + '"' } 

    But this comes to a compiler error in BuildConfig

    // Fields from default config. public static final int SOME_INT_FILED = "512"; 

    So for now I stay with:

    def someVar = 0 android { ...     buildConfigField 'String', 'SOME_INT_FIELD',  '"' + someVar + '"' } 

    and use it like:

    final int value = Integer.valueOf(BuildConfig.SOME_INT_FIELD); 

    Does anybody has better solution or do I use buildConfigField wrong?

    (I also tried using parentheses in combination with any of possibility above.)

    like image 598
    salcosand Avatar asked Jul 22 '16 10:07

    salcosand


    1 Answers

    I found a solution, so maybe this answer will help somebody in future.

    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)     } } 

    And now in java I can get DatabaseVersion variable:

    public static final int DB_VERSION = BuildConfig.DatabaseVersion; 
    like image 174
    Beyka Avatar answered Sep 21 '22 06:09

    Beyka