Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Gradle buildConfigField con una variable entera

Quisiera definir una configuración de la estructura archivada donde puedo utilizar una variable definida en el guión del gradle él mismo:

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

Pero esto produce error siguiente:

Error: (25, 0) Gradle DSL método no encontrado: 'buildConfigField ()'

Posibles causas:

  • El proyecto 'PROJECT' puede estar usando una versión de Gradle que no contenga el método.
  • El archivo de compilación puede estar faltando un complemento Gradle.

  • Puedo usar citas como:

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

    Pero esto viene a un error de compilador en BuildConfig

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

    Así que por ahora me quedo con:

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

    Y utilizarlo como:

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

    ¿Alguien tiene mejor solución o no uso buildConfigField mal?

    (También intenté usar paréntesis en combinación con cualquiera de las posibilidades anteriores.)

    One Solution collect form web for “Gradle buildConfigField con una variable entera”

    He encontrado una solución, así que tal vez esta respuesta ayudará a alguien en el futuro.

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

    Y ahora en java puedo obtener la variable DatabaseVersion:

     public static final int DB_VERSION = BuildConfig.DatabaseVersion; 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.