Dowiedziałem się, że moja R.java nigdy nie jest aktualizowana, więc nie zawiera informacji o moich nowych zasobach, więc postanowiłem ją usunąć i pomyślałem, że Eclipse wygeneruje nowy. Ale tak się nie stało i nie mam teraz R.javy. Jak mogę je zregenerować?
Korzystam z systemu Windows 7.
Z jednego z komentarzy: „Doing Project -> Clean jest tym, co spowodowało problem. Czyszczenie usuwa R.java ... iz jakiegokolwiek powodu wtyczka nie regeneruje pliku.”
android
eclipse
r.java-file
Peter Mortensen
źródło
źródło
Odpowiedzi:
Ta strona sugeruje:
...i...
Ta strona sugeruje inne rozwiązanie.
źródło
R.java
, zamiast go regenerować. stackoverflow.com/questions/13065425/…Zauważyłem, że tak się dzieje ze zepsutym układem i wszystko się wysadza. Zrelaksuj się, to jest jak ten stary błąd, kiedy nauczyłeś się programowania C, w którym zapominasz jednego średnika i generuje on sto błędów. Wiele paniki, naciśnij wszystkie przyciski, i pogarsza.
Rozwiązanie
R.
prowadzi do linków. Napraw wszystkie błędy w plikach XML . Jeśli coś w pakietach ADK jest uszkodzone,R
nie zostanie zregenerowane.import android.R
w swojej działalności, usuń to .Menu -> Project -> Build Project
.Co zrobić, gdy R nie regeneruje się
Zwykle dzieje się tak, gdy masz uszkodzony plik XML.
/res/
folderze/layout/
a/values/
zwłaszcza jeśli niedawno zmieniłeś jedno z nichAndroidManifest.xml
. Uważam, że często zmieniam ciąg i zapominam zmienić nazwę ciąguAndroidManifest.xml
.Android SDK Build-tools
jest zainstalowany. Okno -> Menedżer zestawu SDK systemu Android -> Narzędzia -> Narzędzia do kompilacji zestawu SDK systemu AndroidAndroid SDK Tools
równieżAndroid SDK Platform-tools
iAndroid ADK Build-tools
. Kompilacja kończy się po cichu, jeśli się nie zgadza.źródło
Miałem ten sam problem. Kiedy to sprawdziłem, okazało się, że nazwa zasobu XML w układzie nie ma właściwej konwencji nazewnictwa. Miał kilka wielkich liter. Zmieniłem więc nazwę, aby wszystkie litery były małe i magia działała.
źródło
Jednym z powodów, dla których R.class może nagle zniknąć, są błędy w plikach XML. Na przykład, gdy dodajesz plik XML z dużymi literami w nazwie np. MyCoolLayout.xml, co jest niedozwolone. Lub gdy masz odniesienia, które nie wskazują na istniejące pliki itp.
źródło
Jeśli z jakiegoś powodu to nie działa: Upewnij się, że pliki layout.xml nie zawierają błędów. Zaćmienie wydaje się być tutaj trochę błędne: czasami nie oznacza to błędów w XML-ie ani eksploratorze pakietów. W takim przypadku: spójrz na widok „konsoli” lub „problemów” po użyciu „czystego”. Wszystkie błędy powinny tam zostać wyświetlone. Napraw je i wykonaj ponownie czyste.
UWAGA: NIE jest konieczne naprawianie błędów, które pojawiają się z powodu brakującego pliku R. Po prostu napraw pliki XML i inne błędy projektu i używaj czystego!
źródło
Szybka naprawa:
Nazwa pakietu w manifeście musi być taka sama jak nazwa w
/src
folderze/gen
pakiet folderów zostanie automatycznie odtworzony.Szczegółowa obserwacja:
Obserwuj nazwę pakietu w
/gen
folderze. W moim przypadku było inaczej niż w/src
folderze.Pakiet wymieniony w manifeście to pakiet
/gen
.Próbowałem również dodać do
/src
folderu pakiet z nazwą folderu, aby/gen
zobaczyć, co by się stało, ale to nie rozwiązało problemu. Następnie przystąpiłem do usunięcia nazwy pakietu, która nie była taka sama jak nazwa pakietu/src
folderu. Ten pakiet o nazwie, która nie odpowiada/src
folderowi, został ponownie utworzony, gdy tylko go usunąłem.Ponieważ odwołanie do pakietu w manifeście odpowiadało temu, który był bezsensownie odtwarzany i który nie odpowiadał pakietowi w
/src
folderze, spowodowało to konieczność zmiany nazwypackage = "oldPackage"
napackage = "srcFolderPackage"
.źródło
Miałem ten sam problem i w końcu znalazłem problem: W strings.xml nie zachowałem linii
<string name="app_name">program-name</string>
domyślnie która jest obecna podczas tworzenia nowego projektu na Androida. Myślałem, że był używany tylko w programie HelloWord, który jest programem oryginalnym.Jednak plik AndroidManifest.xml odnosi się do tej wartości, stąd:
=> Błąd kompilacji;
=> R.java nie jest aktualizowana;
=> ID nie są rozpoznawane ...
źródło
Android dodał w narzędziu kompilacji SDK narzędzie ADT 22 do mechanizmu budowania. Musisz tylko wykonać następujące kroki.
To rozwiąże problem.
źródło
Jeśli twoja R.java nie jest generowana, jednym z rozwiązań jest usunięcie pliku układu o nazwie „blabla.out.xml”.
Po usunięciu tego pliku spróbuj wyczyścić projekt z menu Projekt -> Wyczyść .
źródło
Jako uogólnienie odpowiedzi Glaux, jeśli masz jakieś błędy w
res
katalogu, R.java może nie wygenerować - nawet jeśli wyczyścisz i przebudujesz. Najpierw rozwiąż te błędy.Na przykład: po dodaniu pliku obrazu powiedz „myimage-2.jpg” system uzna to za błąd, ponieważ nazwy plików są ograniczone do wartości alfanumerycznych. Odśwież katalog w katalogu „res” po dodaniu jakichkolwiek plików i obserwuj dane wyjściowe w oknie konsoli pod kątem ostrzeżeń o nazwach plików.
źródło
Jeśli twój system operacyjny to Ubuntu, mogę podać kilka sugestii:
Zainstaluj lub zaktualizuj ia32-lib:
Sprawdź, czy masz odpowiednie uprawnienia do folderu aapt:
Uruchom Eclipse:
Uruchom projekt -> Oczyść w środowisku Eclipse
źródło
Masz 100% błędu w pliku XML , ale weryfikacja XML nie pokazuje tego błędu. To jest powód, dla którego musisz najpierw sprawdzić swoje pliki XML!
źródło
ZAWSZE pomocne jest spojrzenie na kartę Problemy w środowisku Eclipse. W moim przypadku pojawiał się komunikat o błędzie „ Android nie jest w stanie rozwiązać docelowego błędu „ android-8 ”, który uniemożliwiał wygenerowanie R.javy. Tak więc poprawiłem zaimportowany cel do tego, którego użyłem w pliku default.properties , a następnie wykonałem czyszczenie za pomocą Projekty-> Wyczyść i voila! R.java jest generowany automatycznie! Mam nadzieję, że to pomoże!
źródło
Czyszczenie projektu, zamknięcie Eclipse, ponowne otwarcie i uruchomienie mojego projektu sprawiło, że moja R.java ponownie się pojawiła ... Mam nadzieję, że to pomoże
źródło
Upewnij się, że nie importujesz
android.R;
źródło
R.java nigdy nie zostanie wygenerowany, jeśli wystąpią jakiekolwiek błędy w pliku
res
folderze . Na przykład w podfolderze z rysunkiem znajdują się dwa pliki o tej samej nazwie, jeden to icon.png, a drugi to icon.html.Możesz zobaczyć błąd w oknie dziennika konsoli Eclipse, mówiącym: „Ikona wpisu zasobu jest już zdefiniowana”. Po usunięciu icon.html możesz wyczyścić lub po prostu usunąć
gen
folder. Przekonasz się, że R.java została stworzona.źródło
Odkryłem, że każdy plik zawierający duże litery w
res
folderze spowoduje ten błąd. Zdarzyło mi się to z plikiem PNG , który dodałem i zapomniałem.źródło
Po przeczytaniu wielu postów i filmów z YouTube odkryłem, że każdy z nas
R.java
zaginął z różnych powodów.Oto jak to naprawiłem w Eclipse:
gen
folderze ręcznie i zapisz.Wyświetli się następujący komunikat, a plik zostanie automatycznie przepisany:
źródło
Dla mnie dwukrotnie podłączyłem appcompat v7. W każdym razie w Eclipse kliknij prawym przyciskiem myszy nazwę projektu w Eksploratorze pakietów lub Nawigatorze, przejdź do Właściwości, Android i odznacz wszelkie duplikaty w sekcji Biblioteka. Może być konieczne zbudowanie -> Wyczyść później.
źródło
Oczywiście nie ma jednej ostatecznej odpowiedzi na to pytanie, ale oto kolejna, której jeszcze tu nie widzę:
Miałem
R.java
znikają po (próby) zespół Synchronizuj, a tam były pliki rozwiązywania konfliktów w projekcie (tjthingy.xml.mine
,thingy.xml.r35
etc.). Usuwanie ich / rozwiązywanie konfliktów zostało zregenerowaneR
.źródło
Miałem ten problem. Przypadkowo usunąłem to
który zaczął powodować błędy kompilacji w całym projekcie w moich plikach XML, a także w plikach Java. Jak tylko przepisałem to, co usunąłem, zadziałało ponownie :)
źródło
OK, więc jest jasne, że może być wiele przyczyn tego problemu. Jeśli korzystasz z 64-bitowego komputera z systemem Linux i po prostu konfigurujesz ADT po raz pierwszy, możesz napotkać ten problem, gdy R nie generuje się automatycznie. Sprawdź kartę konsoli, a może pojawić się błąd podobny do:
W takim przypadku musisz zainstalować ia32-libs, używając czegoś takiego:
Zobacz tutaj, aby uzyskać szczegółowe informacje: Nie znaleziono adb Androida
źródło
Kilka razy spotkałem się z tym problemem. Odkryłem, że jeśli nie zaimportuję pakietu R przy użyciu nazwy mojej aplikacji, na przykład jeśli moja aplikacja ma nazwę pakietu przykład.test, to stwierdzę, że muszę zaimportować przykład.test.R, aby uzyskać dostęp do dowolnego zasoby.
Jeśli nie zostało to zaimportowane, wówczas zasoby, które zostały zwrócone, były zasobami domyślnymi, bez żadnych moich własnych.
Powiedziawszy to, jeśli okaże się, że otrzymujesz tylko listę domyślnych zasobów, po prostu sprawdź, czy importujesz nazwę_pakietu aplikacji.R, a nie android.R.
źródło
Mój problem polegał na tym, że
appcompat
nie było go w tym samym katalogu co mój projekt.Przekonałem się o tym, kompilując moją aplikację z Antem .
źródło
Upewnij się również, że masz najnowszą wersję wtyczki ADT, i otwórz menedżera SDK systemu Android, aby zaktualizować wszystkie narzędzia SDK do najnowszej wersji. Sprawdź aktualizacje również w samym Eclipse. Niepasujące wersje spowodowały problem.
źródło
Mój problem znajdował się w pliku menu. Wydaje się, że kompilator nie ostrzega, jeśli
strings.xml
w plikach menu znajdują się odniesienia do łańcuchów, które nie istnieją . Sprawdź, czy twojeitem
pliki w menu odwołują się do łańcuchów, które nie istnieją w twoimstrings.xml
. Zwykle wandroid:title
.źródło
Dla mnie ten błąd został spowodowany, gdy próbowałem zduplikować istniejący
res/menu
zamiast tworzyć go za pomocąwizard
.źródło
Wszystkie te odpowiedzi nie mogłyby działać, jeśli używasz Maven. Rozwiązaniem było dla mnie dodanie
do sekcji konfiguracji wtyczki android-maven.
źródło
Znalazłem rozwiązanie, dlaczego R.class nie jest produkowany przez Eclipse po ponownym utworzeniu - 2 czyste, kompilacja itp.
Problem jest tutaj w strings.xml:
Są one domyślnie tworzone przez Eclipse podczas tworzenia projektów.
Zdecydowanie zmieniasz plik strings.xml na własne potrzeby. Czasami usuwasz plik string.xml z tych dwóch wierszy z kodu:
Stwarza problem w pliku AndroidManifest.xml:
Więc nie może komunikować się z ciągiem str.xml.
źródło
Zmieniłem nazwę pliku XML układu i dowiedziałem się później, że plik XML (dostawca widżetów w tym przypadku) nadal odnosi się do starego XML układu, który nie istnieje i który uniemożliwił automatyczne generowanie / korektę klasy R.
źródło