React Native Android Build Error MainActivity.java:29: error: nie można znaleźć symbolu

84

Otrzymuję ten błąd podczas próby skompilowania mojej aplikacji React Native na Androida. Aplikacja na Androida nie może rozwiązać pliku BuildConfig.DEBUG.

: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

Mogę tymczasowo rozwiązać ten problem, po prostu ustawiając go na true. Mogło się to zdarzyć po zmianie nazwy aplikacji (ponieważ to też próbuję zrobić).

Prawdopodobnie muszę coś zmienić w Gradle, aby ponownie generował odpowiedni rodzaj plików.

/**
 * 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";
}
Przeciążenie 119
źródło

Odpowiedzi:

114

Miałem ten sam problem i został on rozwiązany poprzez dodanie następującego oświadczenia importu w MainApplication.java:

import com.facebook.react.BuildConfig;
Manoj Goel
źródło
Pracuje. Dzięki. Mój błąd to: błąd: nie można znaleźć symbolu powrotu BuildConfig.DEBUG; // ------ Odnosi się do tego w kodzie bez importu. ^ symbol: zmienna BuildConfig
MPV
1
Działał jak urok! :)
AndrewHenderson
To zadziałało, ale dlaczego musiałem dodać to ręcznie, jest tajemnicą. : wzruszenie ramion:
Mike S.
Masz mój czas. Dzięki wielkie!!
Anilkumar iOS - ReactNative
2
Ostrzeżenie, zrobienie tego w natywnym reagowaniu może spowodować awarię aplikacji. github.com/wix/react-native-navigation/issues/...
illiteratewriter
83

Sposób, w jaki Android wie, gdzie znaleźć określone pliki i jak je połączyć, polega na użyciu pól ustawionych w pliku AndroidManifest.xml. Ponieważ domyślna konfiguracja projektu React Native odwołuje się do wszystkiego z. (Nazwa zasobu), oznacza to, że wszystko zostanie rozwiązane w odniesieniu do nazwy pakietu ustawionej w <manifest>tagu. Aby wszystko działało od razu po wyjęciu z pudełka i zostało wygenerowane zgodnie z oczekiwaniami, ścieżka do pliku MainActivity.java powinna być taka sama jak nazwa pakietu.

przykład:

nazwa Twojego pakietu aplikacji: com.mycompanyname.myappname

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

gorjanz
źródło
5
W nazwie pakietu „com.mycompany.myapp” rozróżniana jest wielkość liter. Musisz także zmienić applicationId w swoim /android/app/build.gradle
Ed of the Mountain
1
To był dokładnie mój problem, dzięki. Próbowałem zmienić nazwę aplikacji, ale w niektórych miejscach otrzymałem inne nazwy. Musiałem upewnić się, że nazwa aplikacji jest podobna i wszystkie małe litery w folderze systemu plików, w app / build.gradle applicationId, w atrybucie „pakiet” AndroidManifex.xml oraz w imporcie pakietów w MainActivity.java i MainApplication.java - kompilacja przeszła później.
Alexey Grinko
41

Projekt przebudowałem z react-native upgrade. Mój problem polegał na tym, że miałem stare pliki, które odwoływały się do starych nazw pakietów (ponieważ zmieniłem nazwę aplikacji w package.json). Po ich usunięciu rozwiązałem problem.

Przeciążenie 119
źródło
Dziękuję bardzo! Spędziłem dni, próbując to rozgryźć.
David B.
Katalogi z starego AppName Musiałem usunąć można znaleźć w ./android/app/src/main/java/com ..i ./ios
Remo
Działał jak urok
Jaseem Abbas
35

W swoim MainActivity.javamożesz sprawdzić, czy pierwsza linia topackage com.YOU_APP_NAME;

Jeśli ta linia nie istnieje, należy ją dodać.

Rz 1
źródło
1
Próbowałem zmienić nazwę pakietu i to była ostatnia rzecz, o której zapomniałem! Dzięki!
Mats de Swart
3
Tylko w celach informacyjnych: potrzebowałem również zmienić nazwę pakietu w pliku MainApplication.java.
bardu
15

W moim przypadku zmieniłem nazwę pakietu zarówno w pliku BUCK, jak i pliku manifestu.

W pliku BUCK zmień w następujący sposób.

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

android_resource(
    name = "res",
    package = "NEW_PACKAGE_NAME",
    res = "src/main/res", )
rakeshNS
źródło
1
Rozwiązałem mój przypadek, robiąc to + zmieniając nazwy pakietów we wszystkich plikach Java w moim projekcie
Antoine Auffray
13

Pomogło mi połączenie kilku odpowiedzi, podsumowanie:

  • Upewnij się, że nazwy pakietów java są poprawne ( MainApplication.javaitp.)
  • zaktualizuj nazwę pakietu w pliku budowania gradle
  • zaktualizuj nazwę pakietu w pliku manifestu
  • zaktualizuj nazwę pakietu w BUCKpliku
  • upewnij się, że ścieżka do źródeł javascript to struktura folderów zgodna z nazwą Twojego pakietu
WiRa
źródło
Pierwsza kwestia „Upewnij się, że nazwy pakietów javascript są poprawne” - czy mówimy o package.jsoni co masz na myśli przez „connect”?
Norfeldt
To już jakiś czas temu ... ale przy nazwach pakietów mam na myśli pierwsze linie w plikach java, które są czymś w rodzaju „pakiet com.twoja nazwa.twoj projekt”
WiRa
7

Jeśli bundle identifierzmieniłeś nazwę , prawdopodobnie będziesz musiał zmienić:

Twój android/app/src/main/....../MainApplication.java pakiet i import .

Mimo że użyłem react-native-rename pakietu npm , to nie zajął się niektórymi plikami MainApplication.javai MainActivity.java.

ofundefined
źródło
6

Aktualizacja natywnego reagowania rozwiązała ten błąd -

react-native upgrade

Teraz buduj ponownie -

react-native run-android
Tamandeep Singh
źródło
Świetna sugestia, chociaż usuwa niektóre modyfikacje niektórych plików. Musiałem uruchomić react-native linkponownie, aby ponownie połączyć natywne zależności.
Eliot,
3

Usuń stare pliki, które mogą się tam znajdować w android / app / src / main / java / com Po prostu zachowaj plik z nową nazwą aplikacji. Więc zrób react-native upgrade.

Ankur Kedia
źródło
0

Sprawdź, czy nie zainstalowałeś modułu obsługi reakcji natywnych gestów.

z przędzą

przędza dodaj funkcję obsługi gestów

lub z npm

npm install --save reaguj na natywną obsługę gestów

Następnie

łącze reaguj-natywne reaguj-natywne-obsługa-gestów

Nadeeshan Herath
źródło
0

Doświadczyłem tego, obserwując https://dev.to/karanpratapsingh/quick-guide-for-updating-package-name-in-react-native-3ei3 . Zmieniłem nazwę mojej aplikacji z com.company_appna com.mycompany.myapp, najwyraźniej było kilka plików, które nadal musiałem zaktualizować, ale nie zostały uwzględnione w przewodniku, który śledziłem, myślę, że przewodnik jest tylko ogólny, jak nowa aplikacja natywna do reagowania, rozwiązałem to robiąc globalne wyszukiwanie com.company_appi zastępując każdy z nich, com.mycompany.myappkiedy ma to sens.

aprilmintacpineda
źródło