R kann nicht aufgelöst werden - Android Fehler
-
23-08-2019 - |
Frage
Ich habe gerade heruntergeladen und installiert die neue Android SDK. Ich wollte eine einfache Anwendung erstellen, um es zu testen zu fahren.
Der Assistent diesen Code erstellt:
package eu.mauriziopz.gps;
import android.app.Activity;
import android.os.Bundle;
public class ggps extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
Eclipse- gibt mir den Fehler
R kann nicht aufgelöst werden
on line
setContentView(R.layout.main);
Warum?
PS: Ich habe eine XML-Datei mit dem Namen main.xml
unter res/layout/
haben
Lösung 7
Was Will sagte, war richtig
R ist eine automatisch generierte Klasse, die die Konstanten hält Ihre> Ressourcen zu identifizieren. Wenn Sie nicht über eine R.java-Datei (es wäre gen / eu.mauriziopz.gps / R.java in> sein Eclipse-mit dem 1.5 SDK) würde ich empfehlen, Schließen und erneuten Öffnen Ihres Projekts oder gehen> Projekt> alle bauen (und die Auswahl von „automatisch erstellen“, während es wie empfohlen von> Josef). Wenn das nicht funktioniert, als versuchen, ein neues Projekt zu machen, wenn das Problem als> post neu erstellt wird hier wieder und wir werden mehr ins Detail gehen.
, aber ich habe herausgefunden, dass es ein weiteres Problem, das die ersten wurde verursacht. Die Tools im SDK-Verzeichnis nicht über die Berechtigungen ausgeführt werden, so war es wie die nicht für Eclipse existieren, so hat es nicht die R.java
-Datei erstellen.
So die Berechtigung ändern und "Build automatisch" löste das Problem der Auswahl.
Andere Tipps
Nachdem dieses Problem aufzuspüren als gut, fand ich diese Note in der Android-Dokumentation:
http://source.android.com/source/using-eclipse.html
* Hinweis: Eclipse-mag manchmal einen „Import android.R“ hinzufügen Aussage bei der Anfang Ihrer Dateien, die Ressourcen verwenden, vor allem, wenn Sie Eclipse-fragen sortieren oder sonst Importe verwalten. Diese wird dazu führen, dass machen zu brechen. Aussehen out für diesen fehlerhaften Import Aussagen und löschen. *
Während durch die Android Probe Tutorials gehen, würde ich oft die Strg + Umschalttaste + O Befehl "Organisieren Import" und erzeugen alle fehlenden Import-Anweisungen. Manchmal würde erzeugen diese die falsche Import-Anweisung, die die R.java
Klasse verstecken würde, die automatisch generiert wird, wenn Sie zu bauen.
Jedes Mal, wenn ich mit R ein Problem hatte nicht erzeugt worden ist, oder sogar verschwunden, dies in der XML-Layout-Datei zu einem gewissen Problem zurückzuführen ist, die die Anwendung verhindert gebaut.
Wenn Sie erhalten
R kann nicht aufgelöst werden
dann überprüfen Sie die /res
Verzeichnis und es muss eine Datei sein, die einige Fehler in ihm haben, und das ist die Anwendung verhindert wird gebaut. Zum Beispiel kann es eine Layout-Datei sein oder es kann darauf zurückzuführen sein, einige fehlende Ressource ist, aber Sie definiert es bereits in der XML-Datei.
Wenn Sie irgendwelche zusätzlichen, noch nicht genutzten (!) Oder nicht referenzierte (!) Bilder in einem Ordner wie res / Drawables-MDPI, die auf die Dateinamenskonventionen nicht entsprechen (nur enthalten [a-z0-9_.] ), erzeugen die R.java Klasse vielleicht nicht, um die Kette von Ereignissen alle anderen Beiträge genannten verursacht. Hoffe, es hilft!
mein Projekt haben, gehören ein r.java.at Anfang R.layout.main gut.Aber arbeiten, nachdem er einige Code hinzufügen es nicht funktioniert, und der Fehler ist R.layout.main nicht behoben werden. was ist das Problem?
Sehen Sie sich Ihre Importe. Die Chancen stehen gut, dass die Zeile:
import android.R;
wird dort sein. Wenn das der Fall ist, entfernen Sie diese, so dass Ihr Projekt R nicht mit der Standard-Android-Ressourcen Klasse lösen wird, aber mit dem einem automatisch generierte von Ihren / res / Ordnern.
Und eine andere Sache, die dieses Problem verursachen können:
Ich installierte die neue ADT (v. 22). Er hielt gen
Ordner zu erstellen, die R.java
enthält. Die Lösung war auch neue Android SDK Tools von Android SDK-Manager Erstellen Sie installieren.
R.java
ist eine Datei, die Android Eclipse-Plugins erstellt, während
Aufbau Ihrer Anwendung. R.java
wird unter dem „gen“ erstellt
Verzeichnis. Diese Datei wird von den Informationen in den „res“ erzeugt
Verzeichnis. Wenn Sie laufen „Projekt“ wählen -> „Clean ...“ auf der Eclipse
Menü, wird es entfernen und dann die R.java
Datei regeneriert.
Das Problem „R kann nicht aufgelöst werden“ passiert, wenn Sie Ihre ändern
Paketnamen in der AndroidManifest.xml
Datei. Es nutzt Ihr Android
Paketnamen ein Unterverzeichnis unter dem „gen“ Verzeichnis zu erstellen, in dem
speichert er die R.java
Datei.
kann Eclipse-Probleme sauber ausgeführt wird, weil sie verwirrt ist über
wo die R.java
Datei, wenn Sie das Android-Paket geändert haben
Name. Sie können entweder das Unterverzeichnis unter gen
benennen Sie passen
neue Paketnamen, oder Sie können Ihren Paketnamen die alten ändern zurück
Name. Haben die saubere und dann den Paketnamen in den neuen Namen ändern
Sie wollen. Dies funktioniert am besten, wenn Sie Eclipse-stoppen versuchen, zu bauen
während Sie die Paketnamen ändern. Unter dem Menü „Projekt“
Deaktivieren Sie die Option „Automatisch erstellen“ und auch wenn die
„Clean ...“ Dialog fragt, ob es „sofort ein Build-Start“ sollte
Deaktivieren Sie das Kontrollkästchen, damit es nicht zu bauen ist versuchen, während Sie das ändern
Paketnamen. Nachdem Sie den Namen geändert haben Sie drehen können „Build
Automatisch“wieder ein.
Beachten Sie, dass, wenn Ihr AndroidManifest.xml
Dateipaketname nicht übereinstimmt
Ihre Java-Paketnamen, werden Eclipse-automatisch am Ende des Hinzufügen eines
"Import .java
Dateien
dass irgendwelche Hinweise auf R. Wenn Sie Ihren AndroidManifest.xml
ändern
Paketname, manchmal ist Eclipse-nicht alle diese hinzugefügt aktualisieren
Importe. Wenn das passiert, verwenden Sie das Eclipse-Refactoring ( ALT +
Umschalttaste + R ), um die Import-Anweisung in einer Ihrer Java-Dateien zu ändern
Ihre neuen AndroidManifest.xml
Paketnamen. Am besten ist es, dies zu tun
während Sie deaktiviert "Automatisches Build" haben.
R ist eine automatisch generierte Klasse, die die Konstanten hält Ihre Ressourcen zu identifizieren. Wenn Sie nicht über eine R.java Datei (wäre es mit dem 1.5 SDK gen / eu.mauriziopz.gps / R.java in Eclipse sein) würde ich empfehlen, Schließen und Ihr Projekt Wiedereröffnung oder das Projekt gehen> Build alle (und Auswahl von „automatisch erstellen“, während es wie von Josef empfohlen). Wenn das nicht funktioniert, als versuchen, ein neues Projekt zu machen, wenn das Problem neu erstellt wird, als hier wieder posten und wir werden mehr ins Detail gehen.
Schließen Sie alle Dateien, sauber Projekt, starten Sie Eclipse-.
Es lohnt sich in AndroidManifest.xml
überprüfen. Das Attribut package
hat den richtigen Wert.
Das heißt:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="your.correct.package.name"
...
Wenn Sie das ändern, wird die R.java
neu generiert werden.
Dieser Fehler kann auch durch Hinzufügen einer Aktivität zu einem Namensraum verursacht werden, die an den Stammnamespace für Ihr Paket unterscheiden.
Zum Beispiel, wenn com.example.myapp
der für Ihr Paket Root-Namespace ist, können Sie dann eine Aktivität auf den com.example.myapp.activities
Namespace hinzuzufügen.
Dies wird produziert die „R kann nicht aufgelöst werden“ -Fehler.
den Import der R in dem Standard-Namespace in Ihrer Aktivität zu beheben sein sollte:
import com.example.myapp.R;
Neben den großen Vorschläge in den vorangegangenen Antworten, stellen Sie sicher, dass Ihr Android Ziel gesetzt:
- Rechtsklick auf das Projekt
- Wählen Sie Eigenschaften
- Wählen Sie Android im linken Menü
- Markieren Sie ein Feld neben dem entsprechenden Projekt Build-Target.
- Klicken Sie auf Übernehmen und OK
Edit: Ein Jahr später fand ich eine andere Ursache. Ich hatte ein .jpg Bild in meinem ziehbar Ordner mit dem gleichen Namen wie ein .png-Bild. Referenzierung dieses Bild in meinem Code muss das Programm verwechselt haben und es gab die „R kann nicht aufgelöst werden“ -Fehler.
Stellen Sie sicher, dass Sie den Android-Build-Tool Form sdk-Manager installiert
Projektrechtsklick Eigenschaften-> Java BuildPath Bibliothek auswählen und hinzufügen android-support.jar die diesem Schritt folgen.
Zum Ausbau-> Einstellungen-> Java Build Path als Auswahl Auftrag und Export-Registerkarte. Set android-Unterstützung .jar-Bibliothek geprüft und bis es in oben auf der Liste. Und sauber und rebuild..It funktioniert für die meisten der Fälle
Ich habe gerade dieses Problem zum millionsten Mal habe und erkennen, was es verursacht wurde: Ich habe eine XML-Datei mit Großbuchstaben im Namen. Alle XML-Dateinamen in /res
müssen [a-z0-9\\._]
entsprechen.
Einfachste Lösung -. Manchmal muss man nur die XML-Datei speichern müssen Sie arbeiten an den Autogenerator zu erhalten, um in Tritt
Speichern Sie die Datei (z main.xml), dann löschen Sie die R.java Datei und sehen, ob das regenerierte R.java das Problem R lösen löst.
R
ist eine generierte Klasse. Wenn Sie die (ADT) wird generiert, wenn das Projekt wird gebaut. Möglicherweise müssen ‚Build automatisch‘ ausgeschaltet.
, um die XML-Dateinamen überprüfen. Stellen Sie sicher, dass sie alle in Klein sind.
Vergewissern Sie sich auch, dass alle Bildressourcennamen in Kleinbuchstaben auch alle. Ich hatte einen Großbuchstaben im Namen meiner jpg-Datei, und es verursacht die R ungelöste Fehler direkt über mein Projekt.
abgeschnitten Dieser Fehler auf meiner x64 Linux Mint Installation auf. Es stellte sich heraus, dass das Ergebnis ein Fehler in der ADB
binären war, weil das ia32-libs
Paket nicht installiert wurde. Einfach läuft apt-get install ia32-libs
und die Neubelebung der Eclipse-den Fehler behoben.
Wenn Ihr x64-Distribution nicht ia32-libs haben, werden Sie Multiarch gehen.
Überprüfen # 4 und # 5 zu diesem Beitrag: http://crunchbang.org/forums/viewtopic.php?pid=277883#p277883
Hoffe, das hilft jemand.
Möglicherweise müssen Sie SDK-Tools aktualisieren. Neubelebung Android SDK Manager erneut und installieren Sie ein neues Element: Android SDK Errichten-Tools.
Ich hatte dieses Problem auch. Es stellte sich heraus, dass ich hatte versehentlich die „app_name“ String-Ressource aus der strings.xml
Datei gelöscht, die eine stille Fehler verursacht wurde. Sobald ich es wieder hinzugefügt wurde die R-Klasse generiert erfolgreich und alles war wieder zum Laufen.
Versuchen Sie, neue XML-Layout Dateinamen Kleinbuchstaben zu machen. Verwenden Sie zum Beispiel my_file.xml
statt myFile.xml
.
Ein weiterer Grund R.java
nicht automatisch generiert ist möglicherweise erhalten, wenn Sie Verzeichnisse wie res haben / ziehbar-hdpi , res / ziehbar-MDPI oder res / ziehbar -ldpi .
1.6+ scheinen mit diesen Verzeichnissen in Ordnung zu sein, aber 1,5 will sie nicht. Als ich diese Verzeichnisse entfernt, begann R.java
wieder für mich autogenerating.
Ich hatte die Beispiele für Android 8 und versuchte Android 7 SDK zu verwenden. Als ich das Projekt geschlossen und wieder geöffnet, die Bewerbungsmappe und wählte Android 8 SDK zu verwenden, es war in der Lage, die R-Datei zu finden. Hoffe, das hilft.
In meinem Fall hatte ich einen Fehler in meinem AndroidManifest.xml
. Andere haben gesagt, dass Ihre XML-Dateien fehlerfrei sein müssen, aber ich war nur in den res / Ordnern suchen. Finden und so viele mögliche Fehler beheben und das Problem kann auch lösen sich.
Oft ist dies, weil die MinSDK Versionsnummer Du geliefert wird, wenn das Projekt. Beispiel:
Wenn Sie 2.1 wollen das Minimum sein, Android 2.1 ist eigentlich API Ebene 7.
Sie können sehen, was ich rede, wenn Sie das SDK Sie heruntergeladen und installiert zu sehen. Navigieren Sie zu dem Ort, den Sie das SDK (C:\android-sdk-windows
zum Beispiel) installiert und öffnen Sie den Ordner mit dem Namen „Plattformen“. Sie werden so etwas wie „android-7“ aufgeführt als Ordner sehen, und wenn Sie öffnen, dass es eine source.properties
Datei ist, die, wenn sie mit einem Texteditor geöffnet, können Sie die entsprechende Plattform-Version zeigen.
Wenn Sie ein Projekt erstellen, und Sie müssen eine „Build Ziel“ API wählen, die letzte Spalte in dieser Liste mit dem Namen „API-Ebene“ zeigt die Zahl, die Sie suchen, wenn die MinSDK Einstellung bevölkern.
Dies ist wahrscheinlich eine der häufigsten Fehler, die in der R.java
Datei führt nicht unter Projekt> gen erstellt werden> Paketname> R.java.
Entfernen main.out.xml
. Ich bin neu in diesem und noch nicht wissen, was diese Datei für verwendet wird, aber das Entfernen sie das Problem gelöscht.
Leider keine der bestehenden Fragen geholfen. Da mein Problem plattformspezifische scheint, arbeiten kann dies nur, wenn Sie auf sind Ubuntu 64 Bit (ich derzeit benutze Ubuntu 12). Zuerst habe ich sehe die „Probleme“ Fenster nicht, die bereits eine Lösung angedeutet, dass auf 64-Bit-Umgebung, um die 32-Bit-Bibliotheken müssen, die möglicherweise fehlen:
sudo apt-get install ia32-libs
Ich installierte das Paket und den Wiederaufbau mein Projekt, das das Problem für mich festgelegt.