Dostaję, że przerażająca paczka R
nie istnieje, zabija mnie. Kod jest w porządku. Mam aplikacje na rynku, w których działa kod.
Teraz wykonuje proste webview
aplikacje. o.0
R.string.app_name
jest mój błąd main.xml
i string.xml
jest w porządku. Jestem taki zdezorientowany.
Ponownie otworzyłem starszą wersję z "borrow"
jakimś kodem i została zalana. R. errors.
Zrobiłem czysty i nic się nie zmieniło, z wyjątkiem R.android
dodania importu na górze.
Załadowałem nawet do Netbeans i dostaję to samo. Czyszczenie nie działa. Czy mogę sam napisać R.java
plik?
Co to jest R
? nie jest R
. przypuszczalnie odpowiadaćR.java
Odpowiedzi:
Dla każdego, kto się z tym spotkał, dokonałem refaktoryzacji, zmieniając nazwy folderów przestrzeni nazw. Po prostu zapomniałem również edytować AndroidManifest i dlatego otrzymałem ten błąd.
Upewnij się, że to również sprawdzasz.
źródło
Aby to uprościć:
Oczywiście zastępując
your.app.package
pakietem aplikacji.We wszystkich klasach, które używają odwołań do zasobów R, usuń wszelkie inne za
import
pomocą.R
, npimport android.R;
źródło
phonegap platform remove android
iphonegap platform add android
TL; DR , jeśli pojawi się błąd „pakiet R nie istnieje”, możliwe przyczyny to
-> napraw błędy XML
R
pakietu (patrzpackage
atrybut w AndroidManifest.xml)-> importuj
R
klasę, np.import com.example.android.R;
-> lub użyj odpowiedniego pakietu w swoim źródle, np.
package com.example.android;
-> lub zmień atrybut pakietu w AndroidManifest.xml na
<manifest xmlns:android="..." package="com.example.android" ...>
, jeśli jest to właściweR
identyfikatory pochodzą z zasobów systemowych-> nie importuj
android.R
, ale poprzedzaj identyfikatory naruszające zasadyandroid.
np.android.R.layout.simple_list_item_2
możesz
android.R
oczywiście importować zamiast poprzedzać identyfikatory, ale wtedy nie możesz już importowaćR
klasy aplikacji i musisz poprzedzić identyfikatory aplikacji, np.com.example.android.R.id.main_menu
.R
Klasa jest generowana automatycznie z zasobów aplikacji. Zawieraid
s dla tych zasobów i jest zawarty w pakiecie wymienionym w<manifest>
tagu w odpowiednimAndroidManifest.xml
pliku.Jeśli nie ma błędów w plikach XML zasobów,
R.java
źródło zostanie wygenerowane w podkatalogu pakietu poniżejgen/
i skompilowane.W pakiecie znajduje się inna
R
klasaandroid
. Taandroid.R
klasa zawiera kilka zagnieżdżonych klas, które z kolei zawierająid
s i inne wartości dla zasobów systemowych .Aby użyć klasy w Javie, musisz nazwać klasę całym pakietem, np
lub zaimportuj klasę, a następnie użyj jej bez pakietu
Możesz również użyć klasy bez nazywania pakietu, jeśli zarówno aktualna klasa, jak i używana klasa znajdują się w tym samym pakiecie, np.
źródło
Nigdy, przenigdy nie próbuj samodzielnie pisać klasy R!
Czy zaimportowałeś właściwą klasę R w swoich plikach?
Robić
zamiast
wydaje się być problemem dla wielu ludzi. Po sprzątaniu i budowaniu moje zajęcia czasami importują niewłaściwy.
źródło
Jeśli programujesz w Android Studio i zmieniono nazwę pakietu, powinieneś zmienić nazwę pakietu w manifeście Androida i pliku gradle aplikacji.
iw pliku manifestu
źródło
R.java jest plikiem generowanym automatycznie, zwykle nie jest kompilowany, jeśli występują błędy w pliku xml.
Nie Nie możesz napisać własnego pliku R.java, musi on zostać wygenerowany przez kompilator zasobów.
Sprawdź, czy we wszystkich plikach xml nie ma błędów.
źródło
Klasa R to kod Java generowany automatycznie z plików XML (układ interfejsu użytkownika, łańcuchy internacjonalizacji itp.) Jeśli kod działał wcześniej (tak się wydaje), musisz powiedzieć swojemu IDE, aby jakoś ponownie wygenerował te pliki :
źródło
Przypuszczam, że kiedyś działało, ale teraz nie ...
Może się to zdarzyć, jeśli zmienisz nazwę PAKIETU w pliku MANIFESTU
Jeśli chcesz zmienić nazwę pakietu
źródło
com.example.rickydam.txtbooks
nacom.txtbooks.txtbooks
, tworząc nowy projekt i przeniosłem wszystko do nowego projektu, ale nie mogłem znaleźć R.Próbowałem unieważnić pamięci podręczne, synchronizować z gradle, czyścić projekt, odbudowywać projekt, ponownie instalować narzędzia SDK ... Nic nie działało! Ale twoje rozwiązanie rozwiązało mój problem! Dzięki jeszcze raz! Programuj dalej!Właśnie napotkałem ten błąd podczas używania Bazela do tworzenia aplikacji na Androida:
Upewnij się, że
android_library
/android_binary
używa atrybutuAndroidManifest.xml
z poprawnympackage=
atrybutem, a jeśli używaszcustom_package
atrybutu wandroid_library
lubandroid_binary
, upewnij się, że jest on poprawnie zapisany.źródło
Usuń import android.R; ze wszystkich plików ... po wyczyszczeniu projektu i skompilowaniu projektu ... wygeneruje
źródło
Przykład: Mój pakiet to com.example.mypc.f01 , aby naprawić błąd, dodaj poniższy wiersz do działania:
import com.example.mypc.f01.R;
źródło
Poniżej znajduje się kilka technik, których możesz użyć, aby usunąć ten błąd: -
źródło
W moim przypadku zdałem sobie sprawę, że tworzę wiele pakietów w projekcie. W ramach manifestu Androida stwierdziłem, że nazwa dostawcy niepoprawnie zawierała wartość MyContentProvider zamiast .provider.MyContentProvider. Mój główny pakiet (z interfejsem użytkownika) to co.companyname.database.provider zamiast co.companyname.database.
Następnie kliknąłem prawym przyciskiem myszy instrukcje importu dla klasy, której dotyczy problem, i poprosiłem Android Studio (0.8.6) o zoptymalizowanie moich instrukcji importu. Zauważyłem również, że jeśli szukasz .R w pasku wyszukiwania AS w prawym górnym rogu IDE, możesz znaleźć automatycznie wygenerowany plik R.java, który jest częścią twojego pakietu. W tym momencie nie musisz niczego zmieniać. Studio powinno naprawić projekt po poprawieniu pliku manifestu systemu Android i ponownym skompilowaniu.
Innym elementem jest to, że w jednej z klas korzystałem z metody toString (). Length () do oceny łańcucha, ale zamieniłem je na TextUtils.IsEmpty (stringVal); Nie mogę wymyślić nic innego, co zrobiłem, aby rozwiązać problem.
Mam nadzieję, że to komuś pomoże.
Uwaga - wszystko to dotyczy AS 0.8.6
PS
R.java jest generowany automatycznie, więc przeczytaj nagłówek: / * AUTO-GENERATED FILE. NIE MODYFIKUJ. * * Ta klasa została automatycznie wygenerowana przez narzędzie * aapt na podstawie znalezionych danych o zasobach. * Nie należy go modyfikować ręcznie. * /
źródło
Kiedy tego doświadczyłem, stworzyłem nowy projekt i skopiowałem pliki z mojego starego projektu do nowego.
Ja jednak nadal miał ten sam problem:
R does not exist
. Potem zdałem sobie sprawę, że skopiowałem i wkleiłem Manifest z mojego notatnika do manifestów Android Studio i nie zmieniłem nazwy pakietu w pliku manifestu.Dlatego po zmianie nazwy pakietu w manifeście na nową nazwę projektu nowy projekt, który utworzyłem, działał dobrze.
źródło
Jakie pliki importujesz do plików, w których pojawia się błąd R?
Rozumiem, że plik R jest taki, że są to automatycznie generowane listy referencyjne do wszystkich atrybutów w aplikacji na Androida. Dlatego nie możesz tego zmienić samodzielnie.
Czy używasz Eclipse do tworzenia tego projektu? Czy starsze projekty otrzymywały te błędy przed aktualizacją Eclipse? W jakich plikach referencyjnych pojawiają się błędy?
Sprawdź, czy nie zaimportowałeś innego pliku R z innego skopiowanego kodu w innej aplikacji.
źródło
Napotykam ten problem za każdym razem, gdy przełączam komputer i próbuję zaimportować stare projekty z plików przesłanych przez USB.
Moim obejściem jest po prostu utworzenie nowego projektu i skopiowanie (przeciągnięcie) plików do IDE (obecnie używającego Netbeans) i odbudowanie. Jest to irytujące i trochę hakerskie rozwiązanie, ale rozwiązuje problem.
Jeśli tak się stanie, w najgorszym przypadku będziesz musiał wykonać kopię zapasową plików, usunąć projekt i po prostu przeciągnąć tam pliki i ponownie skompilować. Miejmy nadzieję, że do tego nie dojdzie, ale to byłaby twoja opcja nuklearna.
źródło
Możesz spróbować
Górne menu Android Studio> Plik> Unieważnij pamięć podręczną / uruchom ponownie ...
Kliknij przycisk unieważnij pamięć podręczną / uruchom ponownie, aby ponownie uruchomić projekt
Rozwiąż ponownie R.xxxx.xxx, jeśli niektóre fragmenty klasy R nie zostały poprawnie rozwiązane
następnie odbuduj swój projekt
Mam nadzieję, że to pomoże
źródło
Jeśli napotkasz ten błąd w Android Studio:
Sprawdź plik (i) modułu Gradle -> defaultConfig -> ustawienie applicationId.
Sprawdź tag AndroidManifest.xml -> manifest pakietu.
Sprawdź deklaracje pakietów we wszystkich plikach java src.
Synchronizuj, wyczyść, a następnie odbuduj za pomocą Gradle.
NIGDY nie twórz własnego pliku R. R jest generowany automatycznie na podstawie źródłowych plików java i ustawień kompilacji.
źródło
Miałem: „błąd: pakiet R nie istnieje” i założyłem, że javac nie ma dostępu do R.java.
Więc dodałem% PROJ_LOC% \ gen do sourcepath i zadziałało! SOURCEPATH =% PROJ_LOC% \ src;% PROJ_LOC% \ gen
Nie używam Android Studio ani Ant (lub XML).
źródło
Jeśli ten błąd pojawił się po rozwiązaniu konfliktów scalania, może pomóc prosta kompilacja -> Wyczyść projekt.
źródło
Właśnie pozbyłem się błędu w moim projekcie. Zaimportowałem przykładowy projekt, zmieniłem foldery pakietów, ale nie zaktualizowałem pakietu w jednym z plików java.
Najbardziej prawdopodobną przyczyną tego błędu „pakiet R nie istnieje” jest nieprawidłowa nazwa pakietu w języku Java lub pliku manifestu. Upewnij się, że jest poprawny i zsynchronizowany, a następnie wykonaj czystą kompilację.
źródło
Czasami problem zostaje rozwiązany, gdy ponownie zaimportujesz projekt do Android Studio.
źródło
Nieprawidłowa ścieżka: Projekt „kasuje” wskaźniki do obrazów i jeśli zmieniono nazwę ścieżki, na przykład pakiet lub foldery Refactored. Następnie po prostu napisz ponownie literę R, a redaktor zasugeruje właściwą ścieżkę i zadziała. W tym przypadku nazwy plików są poprawne, a zawartość, do której odnosi się wskaźnik R., jest obecna, ale ścieżka jest nieprawidłowa, więc czyszczenie i kompilacja nie będą działać.
źródło
Innym przypadkiem złamania R. jest przetwarzanie adnotacji .
Niektóre procesy przetwarzania mogą odnosić się do klas znajdujących się w określonych folderach lub poziomach folderów. Jeśli przeniesiesz wymagane klasy w inne miejsce, możesz otrzymać R. jako nieznaną klasę.
Niestety wskaźnik błędu wskazujący na ten problem nie jest widoczny w Android Studio.
źródło
Nie ma korzyści z samodzielnego pisania R.java, ponieważ jest on zmieniany przy każdej kompilacji,
Pamiętaj tylko, aby użyć R. czegoś, na przykład: R.raw.filename z wewnątrz klas, które mają wartość pakietu podobną do wartości pakietu w pliku AndroidManifest.xml
ponieważ identyfikatory zasobów R. są zdefiniowane dla bieżącej aplikacji lub biblioteki i wszystkie są sprawdzane, jeśli istnieją w czasie kompilacji, więc nie ma sensu zezwalać na dostęp do nich z „kodu”, który nie jest przeznaczony dla bieżącej aplikacji lub biblioteki i może być używane w innych miejscach.
źródło
Zapomniałem dodać „nazwę” mojego „pakietu” na początku mojej klasy java. Sprawdź, czy Twój został faktycznie dodany.
źródło
Poniżej pracują dla mnie.
Jeśli pierwszy krok nie działa, spróbuj drugiego.
źródło
Rozwiązuję swój problem:
.
Idź do
AndroidManifest.xml
pliku i zmienionominSDKVersion="17"
z 19źródło