2016-01-25 11 views
28

Otrzymuję ten błąd podczas próby kompilacji aplikacji React Native dla systemu Android. Aplikacja na Androida nie może rozpoznać BuildConfig.DEBUG.React Natywny błąd kompilacji Androida MainActivity.java:29: błąd: nie można znaleźć symbolu

: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ć problem, po prostu ustawiając go na wartość true. To mogło się stać po zmianie nazwy aplikacji (ponieważ jest to również coś, co próbowałem zrobić).

Prawdopodobnie muszę zmienić coś za pomocą Gradle, aby ponownie wygenerował 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"; 
} 

Odpowiedz

29

Przebudowałem projekt na 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.

+0

Dziękuję bardzo! Spędziłem kilka dni, próbując to rozgryźć. –

+0

Katalogi ze starym AppName, które musiałem usunąć, można znaleźć w ./android/app/src/main/java/com ..i ./ios – remo

+0

Pracował jak amulet –

39

Sposób, w jaki Android wie, gdzie znaleźć określone pliki, oraz jak podłączyć określone pliki, to pola ustawione w AndroidManifest.xml. Ponieważ domyślna konfiguracja projektu React Native, odwołuje się do wszystkiego za pomocą. (Nazwa-zasobu), oznacza to, że wszystko zostanie rozwiązane z uwzględnieniem nazwy pakietu ustawionej w znaczniku <manifest>. Aby wszystko działało po wyjęciu z pudełka i wszystko, co ma być generowane zgodnie z oczekiwaniami, ścieżka do MainActivity.java powinna być taka sama, jak nazwa pakietu.

przykład:

swoją nazwę pakietu aplikacji: com.mycompanyname.myappname

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

+2

Nazwa pakietu "com.mycompany.myapp" jest przypadkiem wrażliwy. Musisz także zmienić applicationId w swoim pliku /android/app/build.gradle –

18

W swojej MainActivity.java, można sprawdzić w pierwszej linii jest package com.YOU_APP_NAME;

Jeśli ta linia nie istnieje, powinieneś to dodać.

+0

Próbowałem zmienić nazwę paczki i to była ostatnia rzecz, o której zapomniałem! Thnx! –

+2

Po prostu dla odniesienia: musiałem zmienić nazwę pakietu również w MainApplication.java. – bardu

1

Połączenie niektórych odpowiedziach pomógł mi, podsumowanie:

  • Upewnij JavaScript Nazwy pakietów są prawidłowe
  • zmiana nazwa pakietu w Gradle plik build
  • zmiana nazwa pakietu w manifeście file
  • upewnij się, że ścieżka do ciebie javascript sources to struktura folderów zgodna z nazwą twojego pakietu
2

Usuń stare pliki, które mogą tam być w android/app/src/main/java/com Po prostu zachowaj plik z nową nazwą aplikacji. Następnie wykonaj react-native upgrade.

1

W moim przypadku zmieniłem nazwę paczki zarówno w pliku BUCK, jak i w 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",) 
0

Aktualizacja reagować-rodzimy rozwiązać ten błąd -

react-native upgrade 

Teraz znowu budować -

react-native run-android 
Powiązane problemy