Gradle buildConfigField BuildConfig no puede resolver el símbolo


81

Estoy usando Gradle para crear mi aplicación de Android. Estoy tratando de usar algunos indicadores basados ​​en el tipo de compilación (lanzamiento o depuración).

Mi archivo Gradle se ve así:

android {
    buildTypes {
        debug {
            buildConfigField 'boolean', 'PREPROD', 'true'
            buildConfigField 'boolean', 'STAGING', 'false'
        }

        release {
            buildConfigField 'boolean', 'PREPROD', 'false'
            buildConfigField 'boolean', 'STAGING', 'false'
        }
    }
}

Y si intento llamar BuildConfig.PREPRODo BuildConfig.STAGINGrecibo el error "No se puede resolver el símbolo". La sincronización de Gradle fue exitosa, así que no sé si olvidé algunos pasos para poder usar esta función.

El BuildConfig.javaarchivo generado es el siguiente (en build/source/buildConfig/debug/com.example.myapp):

package com.example.myapp;

public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");
  public static final String PACKAGE_NAME = "com.example.myapp";
  public static final String BUILD_TYPE = "debug";
  public static final String FLAVOR = "";
  public static final int VERSION_CODE = 400;
  public static final String VERSION_NAME = "";
}

¿Puede comprobar que se creó la clase BuildConfig adecuada? Estaría ubicado enbuild/source/buildconfig/debug/...
Xavier Ducrohet

Agregué el generado BuildConfig.javaa mi pregunta.
Gaëtan

¿Qué versión del complemento estás usando? Con 0.9.1 no veo esto (ambos booleanos aparecen en la clase).
Xavier Ducrohet

4
No debería tener que sincronizar (aunque Studio le pedirá que lo haga porque no sabe si cambió el modelo), pero deberá compilar, ya que la clase BuildConfig se genera durante la compilación en función de lo que está en el archivo build.gradle.
Xavier Ducrohet

2
Hola, administro dos tipos en la aplicación a través de la configuración de configuración y, como tú, estoy tratando de crear alguna variable de configuración pero para un sabor diferente. Intenté a tu manera, pero no vi ninguna actualización en sabor / BuildConfig.java y debido a eso no pude acceder a la variable incluso en tiempo de compilación. Cualquier sugerencia !
Código

Respuestas:


84

Asegúrese de que su archivo esté importando la clase BuildConfig correcta . A veces, si tiene otras bibliotecas o módulos del proyecto, puede importar el buildConfig incorrecto. Asegúrese de que su importación sea así com.project.app.BuildConfig . Estaba teniendo el mismo problema y el problema era este, espero que pueda ayudar a alguien.


2
Salvaste mi día ! Gracias Señor !
Astyan

1
@Astyan me alegro de haber podido ayudar.
MRodrigues

¿Cómo hago esto con build vairents a medida que cambia el com.xx completo?
Zapnologica

Las variantes de compilación de @Zapnologica no deberían tener ningún impacto en esto. Siempre que tenga sus variables definidas en cada variante, en el archivo build.gradle.
MRodrigues

5 años después y les debo un gran agradecimiento. En mi caso, estaba usando algoliasearch.BuildConfig sin siquiera importarlo
dustytrash

44

Estaba teniendo el mismo error. Intente hacer clic en sincronizar , en el lado derecho de guardar . Haz eso después de la sincronización de Gradle .


8
¿Dónde está la sincronización?
Lucky_girl

25

Me pasó porque no declaré un campo String correctamente.

Olvidé a los personajes que se escapaban. Cambio de:

buildConfigField "String", "FOO", "foo"

a

buildConfigField "String", "FOO", "\"foo\""

resuelve el problema.


¡Esto fue todo para mí! ¡Gracias! A veces realmente son esas malditas cositas :)
MacD

23

Los cambios en los archivos de compilación de Gradle no actualizan la generación de la clase BuildConfig, incluso si hace clic en la barra amarilla "sincronizar ahora" en la parte superior. Una limpieza completa forzará la generación de este archivo.

En Android Studio: Construir -> Proyecto limpio


16

Asegúrese de agregar su parámetro también a defaultConfig. Probablemente esté ejecutando el buildVarient predeterminado mientras su parámetro está definido en un buildVariant específico.

en el archivo build gradle use esto:

 defaultConfig {
        buildConfigField('String' , 'myParameter', 'someValue')
    }

Luego, en el código usa esto:

String myParam= BuildConfig.myParameter;

Espero que esto ayude, MA :)


13

Lo mismo me pasó a mí, solucionado al ejecutar esto en la raíz del proyecto:

./gradlew assembleDebug

12

Primero debe elegir la variante de compilación deseada para poder acceder a su buildConfigField

ingrese la descripción de la imagen aquí


Eso me ayudó. Ya tenía una variante de compilación seleccionada, pero cambiarla provocó una reconstrucción que hizo que el error desapareciera.
LarsH

11

Si ocurre este tipo de problema, simplemente limpie y reconstruya su proyecto.

Gracias.


5

Este mismo problema me ha estado volviendo loco durante más de una semana. En mi caso, fue una simple importación que faltaba. Lo busqué, pero de alguna manera en ningún lugar de los documentos que pude encontrar, ¡menciona que necesita importar la clase BuildConfig en cualquier lugar! Y sin embargo, es lógico. Seguí creyendo que podría ser automático. Bueno, no lo es.

Así que intente:

  • haga clic una vez en la BuildConfig.parte del código que causa el error. Debería aparecer un mensaje de ayuda en una burbuja azul que diga algo como: "? uk.co.package.app.BuildConfig? Alt + ENTER " Haga clic en él y Android Studio agregará automáticamente la importación que falta. o
  • agregue import uk.co.package.app.BuildConfig;en algún lugar de la lista de sus importaciones.

reconstruir ... funciona! bueno, me sirvió de todos modos.

¡Espero que ayude a otro novato de Android Gradle como yo!


4

En Android Studio, haga clic en Construir y luego en Limpiar proyecto. Después de limpiar, haga clic en Reconstruir proyecto. - Cuando termine, cierre su proyecto. - Abra su proyecto nuevamente y ejecútelo, el error no debería aparecer nuevamente, se ha borrado.


2

En mi caso, el problema era que acababa de cambiar el nombre de un módulo de mi proyecto, pero las referencias del nombre de ese módulo no se actualizaron automáticamente en el AndroidManifest.xml.

Cambiarles el nombre manualmente y reconstruir el proyecto resolvió el problema.


Hice una refactorización y no cambié por completo todas las instancias; esta respuesta me señaló en la dirección correcta. ¡Gracias!
Cezille07

mismo problema. intenté limpiar el proyecto. reiniciando android studion. nada funcionó, el error seguía ahí. Luego lo limpié una vez más (Build> Clean Project) y luego ejecuto la depuración por la fuerza. tuvo éxito después de la compilación y el error desapareció.
Jefe

2

Busque apariciones de BuildConfig. ¡Tuve una importación deshonesta de BuildConfig inexistente y el compilador en lugar de capturar eso que apuntaba a una línea aleatoria de código en otro lugar!


2

En mi caso, en Android Studio:

  1. Construir -> Proyecto Limpio;

  2. Archivo -> Invalidar cachés / Reiniciar ...

  3. Construir -> Reconstruir proyecto


0

Mi paquete no estaba actualizado en mi manifiesto. Revisé el archivo AndroidManifest.xml y corregí el nombre de mi paquete. Así es como resolví este problema.


0

Mis 2 centavos:

Tenía un import xxx.BuildConfigAS correcto que apuntaba a esa línea y a esas líneas donde tenía BuildConfig.SOME_VARIABLE, así que eliminé la importlínea, la reconstruí, recibí un error que decía eso BuildConfig is unrecognised reference blah blahy después de eso la importé y la reconstruí nuevamente.


0

Encontré el mismo error durante la compilación (depuración) del proyecto anterior en Android Studio. Cuando investigué el error, encontré que la clase BuildConfig estaba definida en 2 archivos. El primero fue en BuildConfig.java y el segundo en BuildConfig2.java.

Quité el de archivo y funcioné correctamente.


Eliminé uno de los archivos BuildConfig.java y luego el proyecto se compiló correctamente y comencé a depurar.
Alok Kumar

0

En mi caso, cometí un error estúpido al COPIAR Y PEGAR LA MISMA VARIANTE. Acabo de cambiar el nombre de la otra variante y funcionó.

ingrese la descripción de la imagen aquí


0

Posible solución: si está utilizando la biblioteca de facturación de Android X , quizás agregue la siguiente línea en su build.gradlearchivo:

implementation 'com.android.billingclient:billing:2.2.0'

Tenga en cuenta que la biblioteca de facturación de Android TAMBIÉN incluye su propia BuildConfig clase que puede confundir al editor de código de Android Studio. Si esto sucede, puede agregar automáticamente la siguiente importdeclaración a una de sus clases:

import com.android.billingclient.BuildConfig;

Ese no es el que quieres usar, ¿verdad? El que desea usar (si estuviera haciendo una compilación de depuración) podría estar aquí:

./build/generated/source/buildConfig/debug/com/example/myapp/BuildConfig.java

Entonces, para solucionarlo, elimine esa línea de declaración de importación y reconstruya para ver si se puede resolver a la derecha BuildConfig.java. Si no puede, es posible que deba nombrarlo explícitamente mediante un import com.example.myapp.BuildConfig.javapara que quede muy claro que desea la versión de este archivo de su paquete y no cualquier otro.

¡Espero que esto ayude!



0

Reconstruya su módulo haciendo clic derecho en su módulo y seleccione el Rebuild Module 'module name'

o use la tecla corta: Ctrl+ Shift+F9

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.