Ich habe gerade das neue Android SDK heruntergeladen und installiert. Ich wollte eine einfache Anwendung erstellen, um sie zu testen.
Der Assistent hat 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);
}
}
aber Eclipse gibt mir den Fehler
R kann nicht aufgelöst werden
online
setContentView(R.layout.main);
Warum?
PS: Ich habe eine XML-Datei mit dem Namen main.xml
unter res/layout/
.
android
eclipse
compiler-errors
android-resources
android-sdk-tools
Maurizio Pozzobon
quelle
quelle
Antworten:
Nachdem ich auch dieses Problem aufgespürt hatte, fand ich diesen Hinweis in der Android-Dokumentation:
http://source.android.com/source/using-eclipse.html
Während ich die Android-Beispiel-Tutorials durchging, benutzte ich oft den Befehl Ctrl+ Shift+, Oum "Importe zu organisieren" und fehlende Importanweisungen zu generieren. Manchmal würde dies die falsche Importanweisung generieren, die die
R.java
Klasse verbirgt , die beim Erstellen automatisch generiert wird.quelle
Jedes Mal, wenn ein Problem mit R nicht generiert wurde oder sogar verschwand, lag dies an einem Problem in der XML-Layoutdatei, das die Erstellung der Anwendung verhinderte.
quelle
android:icon="@drawable/XXX"
Deklaration für eine<item>
in einer Menüressource hatte, aber es gab kein rotes Kringel, das signalisierte, dass die zeichnbare Ressource XXX nicht gefunden wurde. In anderen Fällen"@drawable/YYY"
wurde markiert, wenn JJJ nicht gefunden wurde, aber in diesem Fall nicht. Aus irgendeinem Grund.Wann immer du bekommst
Suchen Sie dann nach dem
/res
Verzeichnis, und es muss eine Datei vorhanden sein, die einen Fehler enthält und die die Erstellung der Anwendung verhindert. Beispielsweise kann es sich um eine Layoutdatei handeln oder um eine fehlende Ressource, die Sie jedoch bereits in der XML-Datei definiert haben.Wenn Sie zusätzliche, sogar nicht verwendete (!) Oder nicht referenzierte (!) Bilder in einem Ordner wie res / drawables-mdpi haben, die nicht den Dateinamenskonventionen entsprechen (möglicherweise nur [a-z0-9_.] Enthalten), wird die Die R.java-Klasse wird möglicherweise nicht generiert, wodurch die Ereigniskette aller anderen Beiträge verursacht wird, auf die verwiesen wird. Ich hoffe es hilft!
quelle
Schauen Sie sich Ihre Importe an. Die Chancen stehen gut, dass die Linie:
wird da sein. Wenn dies der Fall ist, entfernen Sie es, damit Ihr Projekt R nicht mit der Standardklasse für Android-Ressourcen auflöst, sondern mit der automatisch aus Ihrem Ordner / res / generierten.
quelle
Und noch etwas, das dieses Problem verursachen kann:
Ich habe das neue ADT installiert (Version 22). Es wurde keine
gen
Ordner mehr erstellt, die Folgendes enthältR.java
. Die Lösung bestand darin, auch neue Android SDK Build Tools vom Android SDK Manager zu installieren.Lösung hier gefunden
quelle
R.java
ist eine Datei, die die Android Eclipse-Plugins beim Erstellen Ihrer Anwendung erstellen.R.java
wird im Verzeichnis "gen" erstellt. Diese Datei wird aus den Informationen im Verzeichnis "res" generiert. Wenn Sie im Eclipse-Menü "Projekt" -> "Bereinigen ..." auswählen, wird dieR.java
Datei entfernt und anschließend neu generiert .Das Problem "R kann nicht gelöst werden" tritt auf, wenn Sie Ihren Paketnamen in der
AndroidManifest.xml
Datei ändern . Es verwendet Ihren Android-Paketnamen, um ein Unterverzeichnis unter dem Verzeichnis "gen" zu erstellen, in dem dieR.java
Datei gespeichert wird.Eclipse kann Probleme beim Ausführen von Clean haben, da nicht klar ist, wo sich die
R.java
Datei befindet, wenn Sie den Namen des Android-Pakets geändert haben. Sie können entweder das Unterverzeichnis unter umbenennengen
, um es an Ihren neuen Paketnamen anzupassen, oder Sie können Ihren Paketnamen wieder in den alten Namen ändern. Führen Sie die Reinigung durch und ändern Sie den Paketnamen in den gewünschten neuen Namen. Dies funktioniert am besten, wenn Sie Eclipse daran hindern, zu erstellen, während Sie den Paketnamen ändern. Deaktivieren Sie im Menü "Projekt" die Option "Automatisch erstellen" und deaktivieren Sie das Kontrollkästchen "Sofort erstellen", wenn im Dialogfeld "Bereinigen ..." gefragt wird, ob "Build sofort starten" soll, damit nicht versucht wird, während Sie Änderungen vornehmen der Paketname. Nachdem Sie den Namen geändert haben, können Sie "Automatisch erstellen" wieder aktivieren.Beachten Sie, dass
AndroidManifest.xml
Eclipse automatisch ein "import <Ihr Android-Paketname> .R;" hinzufügt , wenn Ihr Dateipaketname nicht mit Ihrem Java-Paketnamen übereinstimmt. Zeile in all Ihren.java
Dateien, die Verweise auf R enthalten. Wenn Sie IhrenAndroidManifest.xml
Paketnamen ändern , aktualisiert Eclipse manchmal nicht alle diese hinzugefügten Importe. Verwenden Sie in diesem Fall das Eclipse-Refactoring ( ALT+ Shift+ R), um die Importanweisung in einer Ihrer Java-Dateien in Ihren neuenAndroidManifest.xml
Paketnamen zu ändern . Am besten tun Sie dies, während Sie "Automatisch erstellen" deaktiviert haben.quelle
import com.example.main.package.name.R;
Was Will sagte, war richtig
aber ich habe herausgefunden, dass es ein anderes Problem gab, das das erste verursachte. Die Tools im SDK-Verzeichnis hatten nicht die Berechtigungen zum Ausführen, daher war es so, als ob die für Eclipse nicht vorhanden wären, sodass die
R.java
Datei nicht erstellt wurde.Das Ändern der Berechtigung und die Auswahl von "Automatisch erstellen" löste das Problem.
quelle
cd $ANDROID_SDK_ROOT/build-tools/<version>
. Dannchmod a+x
auf Dateien wieaapt
,aidl
,dexdump
,dx
etc.ANDROID_SDK_ROOT
sollte gesetzt sein , in Ihrer Umgebung, und es wird auf Ihre SDK - Installation zeigen. Zum Beispiel/opt/android-sdk
. Es ist wichtig, beide einzustellenANDROID_SDK_ROOT
undANDROID_NDK_ROOT
weil die Android-Tools sie intern verwenden. Siehe Empfohlenes NDK-Verzeichnis? auf der NDK-Benutzerliste.R ist eine automatisch generierte Klasse, die die Konstanten enthält, mit denen Ihre Ressourcen identifiziert werden. Wenn Sie keine R.java-Datei haben (dies wäre gen / eu.mauriziopz.gps / R.java in Eclipse mit dem 1.5 SDK), würde ich empfehlen, Ihr Projekt zu schließen und erneut zu öffnen oder zu Projekt> Alle erstellen (und) zu wechseln Wählen Sie dort "Automatisch erstellen" (wie von Josef empfohlen). Wenn das nicht funktioniert, versuchen Sie, ein neues Projekt zu erstellen. Wenn das Problem neu erstellt wird, veröffentlichen Sie es erneut hier und wir werden näher darauf eingehen.
quelle
Schließen Sie alle Dateien, bereinigen Sie das Projekt und starten Sie Eclipse neu.
quelle
Es lohnt sich einzuchecken
AndroidManifest.xml
. Das Attributpackage
hat den richtigen Wert.Das ist:
Nachdem Sie dies geändert haben,
R.java
wird das neu generiert.quelle
Dieser Fehler kann auch durch Hinzufügen einer Aktivität zu einem Namespace verursacht werden, der sich vom Root-Namespace für Ihr Paket unterscheidet.
Wenn es sich beispielsweise
com.example.myapp
um den Root-Namespace für Ihr Paket handelt, können Sie demcom.example.myapp.activities
Namespace eine Aktivität hinzufügen .Dies führt zu dem Fehler "R kann nicht gelöst werden".
Um den Import zu korrigieren, sollte das R im Standard-Namespace Ihrer Aktivität wie folgt lauten:
quelle
Stellen Sie zusammen mit den großartigen Vorschlägen in den vorherigen Antworten sicher, dass Ihr Android-Ziel festgelegt ist:
Edit: Ein Jahr später fand ich eine andere Ursache. Ich hatte ein JPG-Bild in meinem Zeichenordner mit dem gleichen Namen wie ein PNG-Bild. Das Verweisen auf dieses Bild in meinem Code muss das Programm verwirrt haben und den Fehler "R kann nicht behoben werden" ergeben haben.
quelle
Stellen Sie sicher, dass Sie das Android Build Tool von SDK Manager installiert haben
Projekt Rechtsklick Eigenschaften-> Java BuildPath Wählen Sie Bibliothek und fügen Sie android-support.jar hinzu. Befolgen Sie diese Schritte.
Gehen Sie zu Projekt-> Eigenschaften-> Java-Erstellungspfad und wählen Sie die Registerkarte Reihenfolge und Export. Stellen Sie die überprüfte Android-Support-JAR-Bibliothek ein und platzieren Sie sie ganz oben in der Liste. Und sauber und wieder aufzubauen. Es funktioniert in den meisten Fällen
quelle
Ich hatte dieses Problem gerade zum millionsten Mal und erkannte, was es verursachte: Ich erstellte eine XML-Datei mit Großbuchstaben im Namen. Alle Ihre XML-Dateinamen
/res
müssen übereinstimmen[a-z0-9\\._]
.quelle
Einfachste Lösung - Manchmal müssen Sie nur die XML-Datei speichern, an der Sie gearbeitet haben, damit der Autogenerator aktiviert wird.
Speichern Sie die Datei (z. B. main.xml), löschen Sie die R.java-Datei und prüfen Sie, ob die neu generierte R.java das R-Lösungsproblem behebt.
quelle
Überprüfen Sie die XML-Dateinamen. Stellen Sie sicher, dass sie alle in Kleinbuchstaben geschrieben sind.
Stellen Sie außerdem sicher, dass alle Bildressourcennamen auch alle in LOWER CASE enthalten sind. Ich hatte einen Großbuchstaben im Namen meiner JPG-Datei und er verursachte den ungelösten R-Fehler in meinem gesamten Projekt.
quelle
R
ist eine generierte Klasse. Wenn Sie die Android Development Tools (ADT) verwenden, wird diese bei jeder Erstellung des Projekts generiert. Möglicherweise ist "Automatisch erstellen" deaktiviert.quelle
Dieser Fehler trat bei meiner x64 Linux Mint-Installation auf. Es stellte sich heraus, dass das Ergebnis ein Fehler in der
ADB
Binärdatei war, da dasia32-libs
Paket nicht installiert war. Durch einfaches Ausführenapt-get install ia32-libs
und Neustarten von Eclipse wurde der Fehler behoben.Wenn Ihre x64-Distribution keine ia32-libs hat, müssen Sie Multiarch wählen.
Überprüfen Sie # 4 und # 5 in diesem Beitrag: http://crunchbang.org/forums/viewtopic.php?pid=277883#p277883
Hoffe das hilft jemandem.
quelle
Möglicherweise müssen Sie die SDK-Tools aktualisieren / installieren. Starten Sie den Android SDK-Manager erneut und installieren Sie ein neues Element: Android SDK Build-tools.one by one delete, korrigieren Sie, welches für Sie funktioniert.
quelle
Möglicherweise müssen Sie die SDK-Tools aktualisieren. Starten Sie den Android SDK Manager erneut und installieren Sie ein neues Element: Android SDK Build-Tools.
quelle
Ich hatte auch dieses Problem. Es stellte sich heraus, dass ich versehentlich die Zeichenfolgenressource "app_name" aus der
strings.xml
Datei gelöscht hatte , was einen stillen Fehler verursachte. Nachdem ich es wieder hinzugefügt hatte, wurde die R-Klasse erfolgreich generiert und alles war wieder betriebsbereit.quelle
Versuchen Sie, den Namen Ihrer neuen XML-Layoutdatei in Kleinbuchstaben zu schreiben. Verwenden Sie zum Beispiel
my_file.xml
anstelle vonmyFile.xml
.quelle
Ein weiterer Grund, der
R.java
möglicherweise nicht automatisch generiert wird , ist, wenn Sie Verzeichnisse wie res / drawable-hdpi , res / drawable-mdpi oder res / drawable-ldpi haben .1.6+ scheint mit diesen Verzeichnissen in Ordnung zu sein, aber 1.5 will sie nicht. Als ich diese Verzeichnisse entfernte,
R.java
begann ich erneut mit der automatischen Generierung.quelle
Überprüfen Sie zunächst, ob ein XML-Layout fehlerhaft ist oder nicht, und beheben Sie ihn dann zuerst.
Entfernen Sie andernfalls die Junit-Abhängigkeit aus dem Projekt und erstellen Sie das Projekt neu.
quelle
Dies liegt häufig an der MinSDK-Versionsnummer, die Sie beim Erstellen des Projekts angegeben haben. Beispiel:
Wenn Sie möchten, dass 2.1 das Minimum ist, ist Android 2.1 tatsächlich API Level 7.
Sie können sehen, wovon ich spreche, wenn Sie das heruntergeladene und installierte SDK durchsuchen. Navigieren Sie zu dem Ort, an dem Sie das SDK installiert haben (
C:\android-sdk-windows
z. B.), und öffnen Sie den Ordner "Plattformen". Sie sehen so etwas wie "android-7" als Ordner, und wenn Sie öffnen, dass es einesource.properties
Datei gibt, die beim Öffnen mit einem Texteditor die entsprechende Plattformversion anzeigt.Wenn Sie ein Projekt erstellen und eine "Build Target" -API auswählen müssen, zeigt die letzte Spalte in dieser Liste mit dem Namen "API Level" die Nummer an, nach der Sie suchen, wenn Sie die MinSDK-Einstellung auffüllen.
Dies ist wahrscheinlich einer der häufigsten Fehler, der dazu führt, dass die
R.java
Datei nicht unter Projekt> gen> Paketname> R.java erstellt wird.quelle
Entfernen
main.out.xml
. Ich bin neu in diesem Bereich und weiß noch nicht, wofür diese Datei verwendet wird, aber das Entfernen hat das Problem behoben.quelle
Gehen Sie einfach zur Android Top-Menüliste. klicken Sie auf Build - Menü, in unter Erstellen klicken Sie auf Projekt neu .
quelle
Ich hatte die Beispiele für Android 8 und versuchte, das Android 7 SDK zu verwenden. Als ich das Projekt schloss und den Anwendungsordner erneut öffnete und mich für die Verwendung von Android 8 SDK entschied, konnte es die R-Datei finden. Hoffe das hilft.
quelle
In meinem Fall hatte ich einen Fehler in meinem
AndroidManifest.xml
. Andere haben gesagt, dass Ihre XML-Dateien fehlerfrei sein müssen, aber ich habe nur im Ordner res / gesucht. Suchen und beheben Sie so viele mögliche Fehler, dass sich das Problem möglicherweise von selbst löst.quelle
Falls jemand interessiert ist (ich könnte hier Ihr Leben retten), hatte ich den Fehler,
R.xml
kann nicht behoben werden, etwas anders bei einem GLS-Projekt. Hmmmm. NachdemR.java
ich reingeschaut hatte , fand ich eine automatisch generierte KlasseXML.java
, (glaube ich) war nicht da.Lösung? Es brauchte einen neuen Ordner in
res
:res\xml
und eine dort aufgerufene Dateidefault_values.xml
. Dann war alles in Ordnung.Nur für den Fall, dass Sie diese Datei nicht haben, ist es:
quelle