Reagieren Sie auf den nativen Android-Build-Fehler MainActivity.java:29: Fehler: Symbol kann nicht gefunden werden

83

Ich erhalte diesen Fehler, wenn ich versuche, meine React Native-Android-App zu kompilieren. Die Android-App kann BuildConfig.DEBUG nicht auflösen.

:app:processDebugJavaRes UP-TO-DATE
:app:compileDebugJavaWithJavac
/Users/amirsharif/mobile-rappad/android/app/src/main/java/com/rappadmobile/MainActivity.java:29: error: cannot find symbol
                .setUseDeveloperSupport(BuildConfig.DEBUG)
                                        ^
  symbol:   variable BuildConfig
  location: class MainActivity
>1 error
:app:compileDebugJavaWithJavac FAILED

Ich kann es vorübergehend beheben, indem ich es einfach auf true setze. Dies könnte geschehen sein, nachdem ich einen Anwendungsnamen geändert habe (da ich dies auch versucht habe).

Ich muss wahrscheinlich etwas mit Gradle ändern, damit es wieder die richtige Art von Dateien generiert.

/**
 * Automatically generated file. DO NOT MODIFY
 */
package com.app;

public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");
  public static final String APPLICATION_ID = "com.rappadmobile";
  public static final String BUILD_TYPE = "debug";
  public static final String FLAVOR = "";
  public static final int VERSION_CODE = 1;
  public static final String VERSION_NAME = "1.0";
}
Überladung119
quelle

Antworten:

113

Ich hatte das gleiche Problem und es wurde durch einfaches Hinzufügen der folgenden Importanweisung in behoben MainApplication.java:

import com.facebook.react.BuildConfig;
Manoj Goel
quelle
Funktioniert. Danke. Mein Fehler war: Fehler: Symbol kann nicht gefunden werden return BuildConfig.DEBUG; // ------ Dies wird im Code ohne Import angegeben. ^ Symbol: Variable BuildConfig
MPV
1
Lief wie am Schnürchen! :)
AndrewHenderson
Das hat funktioniert, aber warum ich es manuell hinzufügen musste, ist ein Rätsel. : Achselzucken:
Mike S.
Du hast meine Zeit. Vielen Dank!!
Anilkumar iOS - ReactNative
2
Eine Warnung, die dies in React-Native ausführt, kann zum Absturz der App führen. github.com/wix/react-native-navigation/issues/…
Analphabetatewriter
82

Android weiß, wo bestimmte Dateien zu finden sind und wie bestimmte Dateien verbunden werden, indem Felder verwendet werden, die in AndroidManifest.xml festgelegt sind. Da die Standardeinstellung eines React Native-Projekts auf alles mit. (Name der Ressource) verweist, bedeutet dies, dass alles in Bezug auf den im <manifest>Tag festgelegten Paketnamen aufgelöst wird . Damit alles sofort funktioniert und alles wie erwartet generiert wird, sollte der Pfad zu MainActivity.java mit dem Paketnamen identisch sein.

Beispiel:

Name Ihres Apps-Pakets: com.mycompanyname.myappname

Speicherort von MainActivity.java: android/app/src/main/java/com/mycompanyname/myappname/MainActivity.java

Gorjanz
quelle
5
Der Paketname "com.mycompany.myapp" unterscheidet zwischen Groß- und Kleinschreibung. Sie müssen auch applicationId in Ihrer /android/app/build.gradle
Ed of the Mountain
1
Es war genau mein Problem, danke. Ich hatte versucht, die App umzubenennen, und an einigen Stellen hatte ich unterschiedliche Namen. Ich musste sicherstellen, dass der App-Name im Dateisystemordner, in app / build.gradle applicationId, im Attribut "package" von AndroidManifex.xml und bei Paketimporten unter MainActivity.java und MainApplication.java ähnlich und in Kleinbuchstaben geschrieben ist - Der Build ging danach vorbei.
Alexey Grinko
41

Ich habe das Projekt mit neu aufgebaut react-native upgrade. Mein Problem war dann, dass ich alte Dateien hatte, die auf die alten Paketnamen verweisen (weil ich den Namen der App in geändert habe package.json). Nachdem ich diese gelöscht hatte, löste ich das Problem.

Überladung119
quelle
Ich danke dir sehr! Verbrachte Tage damit, dies herauszufinden.
David B.
Verzeichnisse mit altem AppName, die ich löschen musste, finden Sie unter ./android/app/src/main/java/com ..und ./ios
remo
Arbeitete wie ein Zauber
Jaseem Abbas
34

In Ihrem MainActivity.javakönnen Sie überprüfen, ob die erste Zeile istpackage com.YOU_APP_NAME;

Wenn diese Zeile nicht vorhanden ist, sollten Sie diese hinzufügen.

Rom1
quelle
Ich habe versucht, meinen Paketnamen zu ändern und dies war das Letzte, was ich vergessen habe! Danke!
Mats de Swart
3
Nur als Referenz: Ich musste den Paketnamen auch in MainApplication.java ändern.
Bardu
15

In meinem Fall habe ich den Paketnamen sowohl in der BUCK-Datei als auch in der Manifest-Datei geändert.

Ändern Sie in der BUCK-Datei Folgendes.

android_build_config(
    name = "build_config",
    package = "NEW_PACKAGE_NAME",
)

android_resource(
    name = "res",
    package = "NEW_PACKAGE_NAME",
    res = "src/main/res", )
rakeshNS
quelle
1
Ich habe meinen Fall gelöst, indem ich dies getan habe + Pakete in allen Java-Dateien in meinem Projekt umbenannt habe
Antoine Auffray
13

Eine Kombination einiger Antworten hat mir geholfen, Zusammenfassung:

  • Stellen Sie sicher, dass Ihre Java-Paketnamen korrekt sind ( MainApplication.javausw.)
  • Aktualisieren Sie den Paketnamen in der Gradle-Build-Datei
  • Aktualisieren Sie den Paketnamen in der Manifestdatei
  • Aktualisieren Sie den Paketnamen in der BUCKDatei
  • Stellen Sie sicher, dass der Pfad zu Ihren Javascript-Quellen eine Ordnerstruktur ist, die Ihrem Paketnamen entspricht
WiRa
quelle
Der erste Punkt "Stellen Sie sicher, dass Ihre Javascript-Paketnamen korrekt sind" - sprechen wir über das package.jsonund was meinen Sie mit "verbinden"?
Norfeldt
Dies ist schon eine Weile her ... aber mit Paketnamen meine ich die ersten Zeilen in den Java-Dateien, die so etwas wie 'package com.yourname.yourproject' sind
WiRa
6

Das Aktualisieren von React-Native hat diesen Fehler behoben -

react-native upgrade

Jetzt wieder bauen -

react-native run-android
Tamandeep Singh
quelle
Toller Vorschlag, obwohl er einige Änderungen an bestimmten Dateien in den Papierkorb wirft. Ich musste danach react-native linkerneut ausführen , um native Abhängigkeiten erneut zu verknüpfen.
Eliot
6

Wenn Sie Ihre umbenannt haben, müssen bundle identifierSie wahrscheinlich Folgendes ändern:

Ihr android/app/src/main/....../MainApplication.java Paket und Importe .

Obwohl ich das react-native-rename npm-Paket verwendet habe , hat es sich nicht um einige Dateien MainApplication.javaund gekümmert MainActivity.java.

ofundefined
quelle
3

Löschen Sie die alten Dateien, die möglicherweise in android / app / src / main / java / com vorhanden sind. Behalten Sie die Datei einfach mit dem neuen Namen der App bei. Dann mach es react-native upgrade.

Ankur Kedia
quelle
0

Überprüfen Sie, ob Sie die Installation des React-Native-Gesture-Handlers verpasst haben.

mit Garn

Garn hinzufügen React-Native-Gesten-Handler

oder mit npm

npm install --save react-native-gesture-handler

Dann

React-Native-Link React-Native-Gesten-Handler

Nadeeshan Herath
quelle
0

Ich habe dies erlebt, als ich https://dev.to/karanpratapsingh/quick-guide-for-updating-package-name-in-react-native-3ei3 folgte . Ich habe meine Anwendung von umbenannt com.company_appin com.mycompany.myapp, anscheinend gab es einige Dateien, die ich noch aktualisieren musste, die aber nicht in der Anleitung enthalten waren, die ich befolgte. Ich denke, die Anleitung ist nur für allgemeine Zwecke gedacht, wie eine neue reaktionsnative App, die ich gelöst habe Dies geschieht durch eine globale Suche com.company_appund Ersetzung jedes einzelnen, com.mycompany.myappwann immer es sinnvoll ist.

Aprilmintacpineda
quelle