Gradle buildConfigField BuildConfig kann das Symbol nicht auflösen

Lesezeit: 5 Minuten

Benutzer-Avatar
Gaëtan

Ich verwende Gradle, um meine Android-Anwendung zu erstellen. Ich versuche, einige Flags basierend auf dem Build-Typ (Release oder Debug) zu verwenden.

Meine Gradle-Datei sieht so aus:

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

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

Und wenn ich versuche anzurufen BuildConfig.PREPROD oder BuildConfig.STAGING Ich erhalte die Fehlermeldung „Symbol kann nicht aufgelöst werden“. Die Gradle-Synchronisierung war erfolgreich, also weiß ich nicht, ob ich einige Schritte vergessen habe, um diese Funktion nutzen zu können?

Das Erzeugte BuildConfig.java Datei ist die folgende (in 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 = "";
}

  • Können Sie überprüfen, ob die richtige BuildConfig-Klasse erstellt wurde. Es würde sich in befinden build/source/buildconfig/debug/...

    – Xavier Ducrohet

    24. März 2014 um 15:41 Uhr

  • Ich habe die generierte hinzugefügt BuildConfig.java zu meiner frage.

    – Gaëtan

    24. März 2014 um 15:56 Uhr

  • Welche Version des Plugins verwendest du? Mit 0.9.1 sehe ich das nicht (beide boolesche Werte werden in der Klasse angezeigt).

    – Xavier Ducrohet

    24. März 2014 um 16:40 Uhr

  • Sie sollten nicht synchronisieren müssen (obwohl Studio Sie dazu auffordert, weil es nicht weiß, ob Sie das Modell geändert haben), aber Sie müssen bauen, da die BuildConfig-Klasse während des Builds generiert wird, basierend auf dem, was in der ist build.gradle-Datei.

    – Xavier Ducrohet

    24. März 2014 um 17:12 Uhr

  • Hallo, ich verwalte zwei Geschmacksrichtungen in der Anwendung über Konfigurationseinstellungen und wie Sie versuche ich, eine Konfigurationsvariable zu erstellen, aber für unterschiedliche Geschmacksrichtungen. Ich habe es auf Ihre Weise versucht, aber kein Update in flavour/BuildConfig.java gesehen und konnte deshalb nicht einmal in der Kompilierzeit auf die Variable zugreifen. Irgendein Vorschlag !

    – Code

    9. August 2015 um 7:40 Uhr

Stellen Sie sicher, dass Ihre Datei das Recht importiert BuildConfig Klasse. Wenn Sie andere Projektbibliotheken oder Module haben, wird manchmal die falsche buildConfig importiert. Stellen Sie sicher, dass Ihr Import so ist com.project.app.BuildConfig. Ich hatte das gleiche Problem und das Problem war folgendes: Ich hoffe, es kann jemandem helfen.

  • Wie mache ich das mit Build-Vairents, wenn sich die vollständige com.xx ändert?

    – Zapnologica

    11. Oktober 2018 um 11:36 Uhr

  • @Zapnologica-Build-Varianten sollten darauf keinen Einfluss haben. Solange Sie Ihre Variablen für jede Variante in der Datei build.gradle definiert haben.

    – MRodrigues

    12. Oktober 2018 um 8:09 Uhr

  • 5 Jahre später und ich schulde Ihnen einen großen Dank. In meinem Fall wurde algoliasearch.BuildConfig verwendet, ohne dass ich es überhaupt importiert habe

    – staubiger Müll

    25. Januar 2020 um 8:21 Uhr

  • Wow, hat mir auch einige Kopfschmerzen erspart. In meinem Fall wurde Folgendes verwendet: com.google.firebase.BuildConfig

    – Kenneth Browning

    12. März 2020 um 15:13 Uhr

  • Hat für mich wie ein Zauber funktioniert, hatte meinen Paketnamen geändert und das hat das Problem verursacht. Das Aktualisieren des Imports auf den Paketnamen und das Hinzufügen von .BuildConfig hat es für mich behoben. Vielen Dank

    – Cherucole

    13. März 2020 um 8:01 Uhr

Ich bekam den gleichen Fehler. Versuchen Sie anzuklicken synchronisierenauf der rechten Seite von sparen. Mach das danach Gradle-Synchronisierung.

  • Wo ist die Synchronisierung?

    – Glückliches Mädchen

    2. Februar 2018 um 17:29 Uhr

  • Datei > „Projekt mit Gradle-Dateien synchronisieren“.

    – Jagd auf Roberts

    8. Januar 2021 um 21:13 Uhr


  • Danke mein Herr! Obwohl es nicht die Schaltfläche zum Synchronisieren war, die mein Problem gelöst hat, habe ich auf Caches ungültig machen / Neustart geklickt und alles wird wieder normal.

    – Keith Mak

    29. April 2021 um 4:18 Uhr

  • Caches ungültig machen und neu starten hat bei mir nicht funktioniert. Ich musste reinigen und dann neu aufbauen, und es funktioniert

    – SaPropper

    17. Oktober 2021 um 20:25 Uhr

Ist mir passiert, weil ich ein String-Feld nicht richtig deklariert habe.

Ich habe die Fluchtzeichen vergessen. Wechsel von :

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

zu

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

Problem gelöst.

  • Das war es für mich! Vielen Dank! Manchmal sind es wirklich diese verdammten Kleinigkeiten 🙂

    – MacD

    9. Juli 2020 um 13:44 Uhr

  • Warum muss der String maskiert werden?

    – IgorGanapolsky

    6. August 2021 um 15:46 Uhr

  • “Wenn der Typ String ist, dann sollte der Wert Anführungszeichen enthalten.”, siehe : developer.android.com/reference/tools/gradle-api/4.2/com/…

    – Ludwig

    6. August 2021 um 15:55 Uhr

Benutzer-Avatar
Benutzer465363

Änderungen in Gradle-Build-Dateien aktualisieren die Generierung der BuildConfig-Klasse nicht, auch wenn Sie oben auf die gelbe Leiste „Jetzt synchronisieren“ klicken. Eine vollständige Bereinigung erzwingt die Generierung dieser Datei.

In Android Studio: Erstellen -> Projekt bereinigen

Benutzer-Avatar
djzhao

In meinem Fall in Android Studio:

  1. Erstellen -> Projekt bereinigen;

  2. Datei -> Caches ungültig machen / Neustart…

  3. Erstellen -> Projekt neu erstellen

  • Dies ist die einzige Lösung, die für mich funktioniert hat!

    – Adam Burley

    18. Mai 2021 um 8:58 Uhr

Benutzer-Avatar
svprdga

Dasselbe ist mir passiert, behoben, als dies im Projektstamm ausgeführt wurde:

./gradlew assembleDebug

  • Dies ist die einzige Lösung, die für mich funktioniert hat!

    – Adam Burley

    18. Mai 2021 um 8:58 Uhr

Benutzer-Avatar
Mohammed Alotol

Sie müssen zuerst die gewünschte Build-Variante auswählen, um auf ihr buildConfigField zugreifen zu können

Geben Sie hier die Bildbeschreibung ein

  • Das hat mir geholfen. Ich hatte bereits eine Build-Variante ausgewählt, aber das Ändern verursachte einen Neuaufbau, der den Fehler verschwinden ließ.

    – LarsH

    3. März 2020 um 14:54 Uhr

  • Verwenden Sie dies, es wird funktionieren android{ buildFeatures{ buildConfig = true } }

    – Nithin Raja

    27. Januar 2021 um 17:27 Uhr


  • Anstatt hier den Build-Typ auszuwählen, habe ich den Namen des Build-Typs in den hier ausgewählten geändert.

    – Hüseyin Bülbül

    23. Februar 2021 um 22:22 Uhr

1330440cookie-checkGradle buildConfigField BuildConfig kann das Symbol nicht auflösen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy