Paket R existiert nicht

114

Ich bekomme das gefürchtete Paket Rnicht, es bringt mich um. Der Code ist in Ordnung. Ich habe Apps auf dem Markt, auf denen der Code ausgeführt wird.

Jetzt werden einfache webviewAnwendungen ausgeführt. o.0

R.string.app_nameist mein Fehler main.xmlund string.xmlist in Ordnung. Ich bin sooo verwirrt.

Ich habe eine ältere Version für "borrow"einen Code erneut geöffnet und sie wurde überflutet. R. errors.Ich habe eine Bereinigung durchgeführt und nichts geändert, außer dass der Import oben R.androidhinzugefügt wurde.

Ich habe sogar in Netbeans geladen und bekomme das Gleiche. Sauber funktioniert nicht. Kann ich die R.javaDatei selbst schreiben ?

Was ist das für ein RDing? ist nicht R. soll entsprechenR.java

Taz Ryder
quelle
1
Überprüfen Sie den Ordner res auf Fehler, wenn Sie einige Projekte als Bibliothek hinzugefügt haben. Checken Sie sie auch ein
Sunny Kumar Aditya
1
Drücken Sie Alt + Enter in der Zeile setContentView (R.layout ..., um den Import hinzuzufügen.
Live-Love

Antworten:

127

Für alle, die darauf gestoßen sind, habe ich die Namespace-Ordner umbenannt. Ich habe nur vergessen, auch AndroidManifest zu bearbeiten, und deshalb habe ich diesen Fehler erhalten.

Stellen Sie sicher, dass Sie dies ebenfalls überprüfen.

Mathijs Segers
quelle
1
Es scheint, dass ich nur innerhalb meiner Aktivitätsklassen auf R zugreifen kann. Ich habe diesen Fehler beim Versuch erhalten, von anderen Klassendateien darauf zuzugreifen.
Joe Lapp
84

Um dies einfach zu machen:

import your.app.package.R;

Natürlich durch your.app.packageIhr App-Paket ersetzen .

Entfernen Sie in allen Klassen, die R-Ressourcenreferenzen verwenden, alle anderen importmit .R, zimport android.R;

ocodo
quelle
3
Bei Verwendung von Cordova ist dies die richtige Lösung. Getestet mit Cordova 3.0.9
Peter
1
Eigentlich mein Fehler. Auf diese Weise kann das Cordova-Projekt ordnungsgemäß erstellt werden, der Begrüßungsbildschirm wird jedoch immer noch NICHT angezeigt. Diese Lösung löst das vorliegende Problem also nicht.
Peter
Dies musste ich tun, wenn ich ein Eclipse-Testprojekt in ein Android Studio-Modul konvertierte.
RightHandedMonkey
Wenn Sie Phonegap verwenden und die obige Importanweisung in Ihre Plugins-Datei einfügen, müssen Sie die Plattform entfernen und erneut hinzufügen. So phonegap platform remove androidundphonegap platform add android
Fawaz
54

TL; DR , wenn Sie den Fehler "Paket R existiert nicht" erhalten, sind mögliche Gründe

  • Einige Fehler in den XML-Ressourcendateien
    -> Beheben Sie XML-Fehler
  • das aktuelle Paket unterscheidet sich von dem RPaket (siehe package Attribut in AndroidManifest.xml)
    -> Import RKlasse, zB import com.example.android.R;
    -> oder das entsprechende Paket in Ihrer Quelle verwenden, zB package com.example.android;
    -> oder ändern Paket Attribut in AndroidManifest.xml zu <manifest xmlns:android="..." package="com.example.android" ...>, wenn das entsprechende
  • Die verwendeten RIDs stammen aus den Systemressourcen
    -> nicht importieren android.R, sondern den fehlerhaften IDs voranstellen android., z. B. android.R.layout.simple_list_item_2
    Sie können android.Rnatürlich importieren, anstatt die IDs vorangestellt zu haben, aber dann können Sie die Anwendungsklasse nicht mehr importieren Rund müssen die Anwendungs-IDs voranstellen, z com.example.android.R.id.main_menu.

Die R Klasse wird automatisch aus den Ressourcen der Anwendung generiert. Es enthält das ids für diese Ressourcen und ist in dem Paket enthalten, das im <manifest> Tag in der entsprechenden AndroidManifest.xmlDatei angegeben ist.

Wenn die Ressourcen-XML-Dateien keine Fehler enthalten, wird die R.javaQuelle in einem der folgenden Paket-Unterverzeichnisse generiert gen/und kompiliert.


RDas androidPaket enthält eine weitere Klasse . Diese android.RKlasse enthält einige verschachtelte Klassen, die wiederum enthalten ids und andere Werte für System - Ressourcen.


Um eine Klasse in Java zu verwenden, müssen Sie die Klasse mit dem gesamten Paket benennen, z

java.util.List<Object> list = new java.util.ArrayList<Object>();

oder importieren Sie die Klasse und verwenden Sie sie dann ohne Paket

import java.util.List;
import java.util.ArrayList;
List<Object> list = new ArrayList<Object>();

Sie können eine Klasse auch verwenden, ohne das Paket zu benennen, wenn sich sowohl die aktuelle Klasse als auch die verwendete Klasse im selben Paket befinden, z

package com.example.android;
public class A {
    /* ... */
}
package com.example.android;
public class B {
    public void useA() {
        A a = new A();
    }
}
Olaf Dietsche
quelle
1
In meinem Fall war das Problem der Klassenpfad 'com.android.tools.build:gradle:3.3.0'. Ich habe es in den Klassenpfad 'com.android.tools.build:gradle:3.2.1' geändert und das Problem gelöst.
Mohit Rajput
25

Versuchen Sie niemals, die R-Klasse selbst zu schreiben!

Haben Sie die richtige R-Klasse in Ihre Dateien importiert?

Tun

import android.R;

anstatt

import com.example.R;

scheint das Problem für viele Menschen zu sein. Nach dem Reinigen und Bauen importieren meine Klassen manchmal die falsche.

J. Maes
quelle
3
Aber ich verstehe nicht, dass das R-Ding nicht da war, als ich das Programm ursprünglich codiert und befolgt habe.
Taz Ryder
12

Wenn Sie in Android Studio entwickeln und den Paketnamen umgestalten, sollten Sie den Paketnamen in Android Manifest und App Gradle-Datei ändern.

 applicationId "change here your package name"

und in Manifestdatei

 package="change here your package name"
Milon
quelle
Ja. Zum Beispiel eine etwas andere Großschreibung des App-Namens.
Steve White
9

R.java ist eine automatisch generierte Datei. Sie wird normalerweise nicht kompiliert, wenn Sie Fehler in der XML-Datei haben.

Nein Sie können keine eigene R.java-Datei schreiben, diese muss vom Ressourcen-Compiler generiert werden.

Überprüfen Sie alle Ihre XML-Dateien auf Fehler.

Nandeesh
quelle
1
Welche Art von Fehlern und wie sollte ein Anfänger sie erkennen?
user1725145
6

Die R-Klasse ist Java-Code, der automatisch aus Ihren XML-Dateien generiert wird (UI-Layout, Internationalisierungszeichenfolgen usw.). Wenn der Code zuvor funktioniert hat (wie es scheint), müssen Sie Ihre IDE anweisen, diese Dateien irgendwie neu zu generieren ::

  • Wählen Sie in IntelliJ Extras> Android> Quellen für <Projekt> generieren
  • (Wenn Sie den Weg in einer anderen IDE kennen, können Sie diese Antwort jederzeit bearbeiten!)
DomQ
quelle
Dies war die Ans, die ich gesucht habe. Danke .. +1
Adhikari Bishwash
5

Ich nehme an, es hat früher funktioniert, aber jetzt nicht mehr.

Dies kann passieren, wenn Sie den PACKAGE-Namen in Ihrer MANIFEST-Datei ändern

<manifest
   package="com.example.android...."

Wenn Sie den Paketnamen ändern möchten

  1. Ändern Sie den Paketnamen manuell in der Manifestdatei.
  2. Klicken Sie auf Ihre R.java-Klasse und drücken Sie F6. Sie können die Klasse in ein anderes Paket verschieben, und alle Verweise auf diese Klasse werden aktualisiert.
Emanuele Greco
quelle
Du bist ein Gott! Ich habe mein Projekt von com.example.rickydam.txtbooksauf com.txtbooks.txtbooksgeändert, indem ich ein neues Projekt erstellt habe, und ich habe alles auf das neue Projekt verschoben, aber es konnte R nicht finden. Ich habe versucht, Caches ungültig zu machen, mit gradle zu synchronisieren, das Projekt zu bereinigen, das Projekt neu zu erstellen und SDK-Tools neu zu installieren ... nichts hat funktioniert! Aber Ihre Lösung hat mein Problem behoben! Danke noch einmal! Codiere weiter!
Ricky Dam
4

Ich bin gerade auf diesen Fehler gestoßen, als ich mit Bazel eine Android-App erstellt habe:

error: package R does not exist
                + mContext.getString(R.string.common_string),
                                      ^
Target //libraries/common:common_paidRelease failed to build
Use --verbose_failures to see the command lines of failed build steps.

Stellen Sie sicher, dass Ihr android_library/ android_binaryein AndroidManifest.xmlmit dem richtigen package=Attribut verwendet, und wenn Sie das custom_packageAttribut für android_libraryoder verwenden android_binary, stellen Sie sicher, dass es richtig geschrieben ist.

Jin
quelle
3

Import löschen android.R; aus allen Dateien .. einmal das Projekt bereinigen und das Projekt erstellen .... Es wird generiert

satish
quelle
3

Beispiel: Mein Paket ist com.example.mypc.f01. Um einen Fehler zu beheben, fügen Sie der Aktivität folgende Zeile hinzu:

import com.example.mypc.f01.R;

O Thạnh Ldt
quelle
3

Im Folgenden finden Sie einige Techniken, mit denen Sie diesen Fehler beheben können: -

  1. Bereinigen Sie Ihr Projekt, Buidl-> Projekt reinigen
  2. Projekt neu erstellen, Erstellen -> Projekt neu erstellen
  3. Öffnen Sie das Manifest und prüfen Sie, ob eine Ressource fehlt
  4. Check-in-Layout auf bestimmte ID, falls nicht vorhanden, hinzufügen
  5. Wenn die oben genannten Schritte nicht funktioniert haben, starten Sie Android Studio neu, indem Sie den Cache ungültig machen
Budhdi Sharma
quelle
2

In meinem Fall wurde mir klar, dass ich im Projekt mehrere Pakete erstellt habe. Im Android-Manifest stellte ich fest, dass der Anbietername fälschlicherweise den Wert von MyContentProvider anstelle von .provider.MyContentProvider enthielt. Mein Hauptpaket (mit der Benutzeroberfläche) war co.companyname.database.provider anstelle von co.companyname.database.

Dann habe ich bei den Importanweisungen für die betroffene Klasse einfach mit der rechten Maustaste geklickt und Android Studio (0.8.6) gebeten, meine Importanweisungen zu optimieren. Ich habe auch festgestellt, dass Sie, wenn Sie in der AS-Suchleiste in der oberen rechten Ecke der IDE nach .R suchen, eine automatisch generierte R.java-Datei finden, die Teil Ihres Pakets ist. An dieser Stelle müssen Sie nichts ändern. Studio sollte das Projekt reparieren, nachdem Sie die Android Manifest-Datei korrigiert und neu erstellt haben.

Ein weiteres Element ist, dass ich in einer Klasse den toString (). Length () verwendet habe, um eine Zeichenfolge auszuwerten, diese jedoch gegen TextUtils.IsEmpty (stringVal) ausgetauscht habe. Ich kann mir nichts anderes vorstellen, was ich getan habe, um das Problem zu lösen.

Hoffe das hilft jemandem.

NB - All dies ist mit AS 0.8.6

PS

R.java wird automatisch generiert. Lesen Sie daher den Header: / * AUTO-GENERATED FILE. NICHT ÄNDERN. * * Diese Klasse wurde vom * aapt-Tool automatisch aus den gefundenen Ressourcendaten generiert. Es * sollte nicht von Hand geändert werden. * /

Tommie C.
quelle
2

Als ich dies erlebte, erstellte ich ein neues Projekt und kopierte die Dateien von meinem alten Projekt in mein neues.

  1. Starten Sie ein neues Projekt
  2. Fügen Sie die alten Dateien zum neuen Projekt hinzu (kopieren Sie und klicken Sie mit der rechten Maustaste auf Layout, Drawables, com.packagename, ...), um meine alten Projektdateien einzufügen

Ich hatte jedoch immer noch das gleiche Problem: R does not exist . Dann wurde mir klar, dass ich Manifest von meinem Notizblock in Android Studio-Manifeste kopiert und eingefügt hatte und den Paketnamen in der Manifestdatei nicht geändert hatte.

Nachdem ich den Paketnamen im Manifest in den neuen Projektnamen geändert hatte, funktionierte das neue Projekt, das ich erstellt hatte, einwandfrei.

Jesús Rojo
quelle
1

Welche Dateien importieren Sie in die Dateien, bei denen der R-Fehler auftritt?

Nach meinem Verständnis der R-Datei werden automatisch Referenzlisten für alle Attribute in der Android-App generiert. Daher können Sie es nicht selbst ändern.

Verwenden Sie Eclipse, um dieses Projekt zu erstellen? Wurden diese Fehler bei älteren Projekten vor der Aktualisierung von Eclipse gemacht? Welche Referenzen erhalten Fehler?

Stellen Sie sicher, dass Sie keine andere R-Datei aus einem anderen kopierten Code in einer anderen App importiert haben.

Musik Affe
quelle
Ich hatte R-Probleme, wenn die Datei AndroidManifest.xml und die Datei project.properties im Projekt nicht dieselbe Ziel- / Mindestversion von Android anzeigen.
Music Monkey
1

Dieses Problem tritt jedes Mal auf, wenn ich den Computer wechsle und versuche, alte Projekte aus Dateien zu importieren, die über USB übertragen wurden.

Meine Problemumgehung besteht darin, einfach ein neues Projekt zu erstellen und die Dateien in die IDE (derzeit mit Netbeans) zu kopieren (zu ziehen) und neu zu erstellen. Dies ist ein Ärger und eine etwas hackige Lösung, aber es behebt das Problem.

In diesem Fall müssen Sie möglicherweise Ihre Dateien sichern, das Projekt löschen und die Dateien einfach hineinziehen und neu kompilieren. Hoffentlich kommt es nicht dazu, aber das wäre Ihre nukleare Option.

user5101322
quelle
1

Sie können es versuchen

Android Studio-Hauptmenü> Datei> Caches ungültig machen / neu starten ...

Klicken Sie auf die Schaltfläche Cache / Neustart ungültig machen, um Ihr Projekt neu zu starten

Lösen Sie R.xxxx.xxx erneut auf, wenn einige der Fragmentklassen der R-Klasse nicht ordnungsgemäß aufgelöst wurden

Erstellen Sie dann Ihr Projekt neu

Ich hoffe es hilft

Ethan Liew
quelle
0

Wenn dieser Fehler in Android Studio auftritt:

Überprüfen Sie die Einstellung (en) des Gradle-Moduls -> defaultConfig -> applicationId.

Überprüfen Sie das Tag "AndroidManifest.xml -> Manifest-Paket".

Überprüfen Sie die Paketdeklarationen in allen src-Java-Dateien.

Synchronisieren, bereinigen und dann mit Gradle neu erstellen.

Erstellen Sie NIEMALS Ihre eigene R-Datei. R wird automatisch aus Ihren Java-Quelldateien und Build-Einstellungen generiert.

rask004
quelle
0

Ich hatte: "Fehler: Paket R existiert nicht" und nahm an, dass javac keinen Zugriff auf R.java hatte.
Also habe ich% PROJ_LOC% \ gen an den Quellpfad angehängt und es hat funktioniert! SOURCEPATH =% PROJ_LOC% \ src;% PROJ_LOC% \ gen

Ich verwende kein Android Studio oder Ant (oder XML).

chatt
quelle
0

Wenn dieser Fehler nach dem Lösen von Zusammenführungskonflikten auftritt, kann ein einfaches Build -> Clean-Projekt hilfreich sein.

Dmitry Smolyaninov
quelle
0

Ich habe gerade den Fehler in meinem Projekt beseitigt. Ich hatte ein Beispielprojekt importiert, die Paketordner geändert, aber das Paket in einer der Java-Dateien nicht aktualisiert.

Die wahrscheinlichste Ursache für diesen Fehler "Paket R existiert nicht" ist, dass der Paketname in Java oder in der Manifestdatei falsch ist. Stellen Sie sicher, dass es korrekt und synchron ist, und führen Sie dann einen sauberen Build durch.

Ajay B.
quelle
0

Manchmal wird es gelöst, wenn Sie das Projekt einfach erneut in Android Studio importieren.

Aung Pyae
quelle
0

Falscher Pfad: Das Projekt "kassiert" die Zeiger auf die Bilder und wenn Sie Namensänderungen am Pfad vorgenommen haben, z. B. Refactored-Paket oder Ordner. Dann schreiben Sie einfach den R-Buchstaben noch einmal und der Editor schlägt den richtigen Weg vor und es wird funktionieren. In diesem Fall sind Ihre Dateinamen richtig und der Inhalt, auf den im R.-Zeiger verwiesen wird, ist vorhanden, aber der Pfad ist falsch. Daher funktionieren Clean und Build nicht.

Patrik Rikama-Hinnenberg
quelle
0

Ein weiterer Fall von R.- Bruch ist die Verarbeitung von Anmerkungen .

Einige Verarbeitungen können sich auf Klassen beziehen, die sich in bestimmten Ordnern oder Ordnerebenen befinden. Wenn Sie die erforderlichen Klassen an einen anderen Ort verschieben, können Sie R. als unbekannte Klasse erhalten.

Leider ist der Fehlerzeiger auf dieses Problem in Android Studio nicht erkennbar.

Zon
quelle
0

Es hat keinen Vorteil, R.java selbst zu schreiben, da es bei jedem Build geändert wird.

Denken Sie daran, R.something zu verwenden, zum Beispiel: R.raw.filename aus Klassen, deren Paketwert dem Paketwert in AndroidManifest.xml ähnelt

Da R. Ressourcen-IDs für die aktuelle Anwendung oder Bibliothek definiert sind und alle überprüft werden, ob sie zur Kompilierungszeit vorhanden sind, ist es nicht sinnvoll, den Zugriff auf sie über "Code" zu ermöglichen, der nicht auf die aktuelle Anwendung oder Bibliothek abzielt und dies kann an anderen Orten verwendet werden.

Mustafa R. Mahdi
quelle
0

Ich habe vergessen, den "Namen" meines "Pakets" oben in meiner Java-Klasse hinzuzufügen. Überprüfen Sie, ob Ihre tatsächlich hinzugefügt wurde.

JESUS ​​CHRISTUS IST DER EINZIGE WEG T.
quelle
-2

Ich löse mein Problem:

Paket R existiert nicht

.

Gehe zur AndroidManifest.xmlDatei und ändere die minSDKVersion="17"von 19

Fazal
quelle
Ich bin anderer Ansicht. Sie sollten minSDKVersion nicht in der Datei AndroidManifest.xml gemäß den aktuellen Standards haben. Wenn Sie es haben, entfernen Sie es aus der Datei AndroidManifest.xml. Es handelt sich um redundanten Code. Die minSDKVersion & targetSdkVersion sollten nur in der Datei build.gradle definiert werden.
Ajay B