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 folgendermaßen 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 den BuildConfig.STAGING
Fehler "Symbol kann nicht aufgelöst werden" erhalte. Die Gradle-Synchronisierung war erfolgreich, daher weiß ich nicht, ob ich einige Schritte vergessen habe, um diese Funktion verwenden zu können.
Die generierte 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 = "";
}
android
gradle
buildconfig
Gaëtan
quelle
quelle
build/source/buildconfig/debug/...
BuildConfig.java
zu meiner Frage hinzugefügt .Antworten:
Stellen Sie sicher, dass Ihre Datei die richtige BuildConfig- Klasse importiert . Wenn Sie über andere Projektbibliotheken oder Module verfügen, wird manchmal die falsche buildConfig importiert. Stellen Sie sicher, dass Ihr Import wie folgt aussieht : com.project.app.BuildConfig . Ich hatte das gleiche Problem und das Problem war: Ich hoffe, es kann jemandem helfen.
quelle
Ich habe den gleichen Fehler bekommen. Versuchen Sie , auf der rechten Seite von Speichern auf Synchronisieren zu klicken . Tun Sie dies nach der Gradle-Synchronisierung .
quelle
Ist mir passiert, weil ich ein String-Feld nicht richtig deklariert habe.
Ich habe die flüchtenden Charaktere vergessen. Wechsel von:
buildConfigField "String", "FOO", "foo"
zu
buildConfigField "String", "FOO", "\"foo\""
Problem gelöst.
quelle
Änderungen an Gradle-Build-Dateien aktualisieren die Generierung der BuildConfig-Klasse nicht, selbst wenn Sie oben auf die gelbe Leiste "Jetzt synchronisieren" klicken. Bei einer vollständigen Bereinigung wird das Generieren dieser Datei erzwungen.
In Android Studio: Erstellen -> Projekt bereinigen
quelle
Stellen Sie sicher, dass Sie Ihren Parameter auch zur defaultConfig hinzufügen. Sie führen wahrscheinlich den Standard-BuildVarient aus, während Ihr Parameter in einer bestimmten buildVariant definiert ist.
Verwenden Sie in der Build-Gradle-Datei Folgendes:
Verwenden Sie dann im Code Folgendes:
Hoffe das hilft, MA :)
quelle
Sie müssen zuerst die gewünschte Build-Variante auswählen, um auf das buildConfigField zugreifen zu können
quelle
Das gleiche ist mir passiert, behoben, als dies im Projektstamm ausgeführt wurde:
quelle
Wenn diese Art von Problem auftritt, bereinigen Sie einfach Ihr Projekt und erstellen Sie es neu.
Vielen Dank.
quelle
Das gleiche Problem macht mich seit über einer Woche verrückt. In meinem Fall fehlte ein einfacher Import. Ich habe danach gesucht, aber irgendwie nirgends in den Dokumenten, die ich finden konnte, wird erwähnt, dass Sie die BuildConfig-Klasse irgendwo importieren müssen! Und doch ist es logisch. Ich glaubte weiterhin, dass es automatisch sein könnte. Nun, das ist es nicht.
Versuchen Sie es also entweder:
BuildConfig.
Teil des Codes, der den Fehler verursacht. In einer blauen Blase sollte eine Hilfemeldung mit folgenden Worten angezeigt werden: "? uk.co.package.app.BuildConfig? Alt + ENTER
" Klicken Sie darauf und Android Studio fügt automatisch den fehlenden Import hinzu. oderimport uk.co.package.app.BuildConfig;
irgendwo in der Liste Ihrer Importe hinzu.wieder aufbauen ... es funktioniert! Nun, es hat sowieso für mich getan.
Hoffe, das hilft einem anderen Android-Neuling wie mir!
quelle
Klicken Sie in Android Studio auf Erstellen und dann auf Projekt bereinigen. Klicken Sie nach dem Bereinigen auf Projekt neu erstellen. - Wenn Sie fertig sind, schließen Sie Ihr Projekt. - Öffnen Sie Ihr Projekt erneut und führen Sie es aus. Der Fehler sollte nicht erneut auftreten. Er wurde gelöscht.
quelle
In meinem Fall bestand das Problem darin, dass ich gerade ein Modul meines Projekts umbenannt hatte, die Namensreferenzen dieses Moduls jedoch nicht automatisch aktualisiert wurden
AndroidManifest.xml
.Das manuelle Umbenennen und Neuerstellen des Projekts löste das Problem.
quelle
Suchen Sie nach Vorkommen von BuildConfig. Ich hatte einen betrügerischen Import von nicht vorhandenem BuildConfig und dem Compiler, anstatt das zu fangen, das auf eine zufällige Codezeile an einer anderen Stelle zeigte!
quelle
In meinem Fall in Android Studio:
quelle
Mein Paket war in meinem Manifest nicht aktuell. Ich habe die Datei AndroidManifest.xml überprüft und den Namen meines Pakets korrigiert. So habe ich dieses Problem gelöst.
quelle
Meine 2 Cent:
Ich hatte eine korrekte
import xxx.BuildConfig
AS, die auf diese Zeile und auf die Zeilen zeigte, in denen ich sie hatteBuildConfig.SOME_VARIABLE
. Also entfernte ich dieimport
Zeile, baute sie neu auf, bekam die Fehlermeldung, dass sieBuildConfig is unrecognised reference blah blah
danach importiert und erneut erstellt wurde.quelle
Ich habe den gleichen Fehler beim Erstellen (Debuggen) des alten Projekts in Android Studio festgestellt. Als ich den Fehler untersuchte, stellte ich fest, dass die BuildConfig-Klasse in 2 Dateien definiert war. Der erste war in BuildConfig.java und der zweite war in BuildConfig2.java.
Ich habe die Datei entfernt und richtig gearbeitet.
quelle
In meinem Fall habe ich einen dummen Fehler gemacht, indem ich dieselbe Variante kopiert und eingefügt habe. Ich habe gerade die andere Variante umbenannt und es hat funktioniert.
quelle
Mögliche Lösung: Wenn Sie die Android X-Abrechnungsbibliothek verwenden , fügen Sie Ihrer
build.gradle
Datei möglicherweise die folgende Zeile hinzu :implementation 'com.android.billingclient:billing:2.2.0'
Beachten Sie, dass die Android-Abrechnungsbibliothek AUCH eine eigene
BuildConfig
Klasse enthält, die den Code-Editor von Android Studio verwirren kann. In diesem Fall wird möglicherweise die folgendeimport
Anweisung automatisch zu einer Ihrer Klassen hinzugefügt :import com.android.billingclient.BuildConfig;
Das ist nicht die, die du benutzen willst, oder? Diejenige, die Sie verwenden möchten (wenn Sie einen Debug-Build durchgeführt haben), ist möglicherweise hier:
./build/generated/source/buildConfig/debug/com/example/myapp/BuildConfig.java
Um dies zu beheben, entfernen Sie diese Importanweisungszeile und erstellen Sie sie neu, um festzustellen, ob sie rechts aufgelöst werden kann
BuildConfig.java
. Wenn dies nicht möglich ist, müssen Sie es möglicherweise explizit über ein benennenimport com.example.myapp.BuildConfig.java
, um deutlich zu machen, dass Sie die Version dieser Datei aus Ihrem Paket und nicht aus einer anderen Version möchten.Hoffe das hilft!
quelle
Verwenden Sie dies für Android X.
import androidx.multidex.BuildConfig;
Es ist Arbeit für mich.
quelle