wake-up-neo.net

Magie hinter R.Java-Datei

In letzter Zeit hatte ich einige Probleme mit der R.Java-Datei. Jetzt habe ich mich entschieden, ein Backup zu machen und die Datei zu löschen, um zu sehen, was passiert.

Es ist nichts passiert, also habe ich eine leere R.Java-Datei erstellt und auf das Beste gehofft. Nun scheint Eclipse herauszufinden, dass die Datei manipuliert wurde und gibt sogar eine Warnung aus:

R.Java was modified manually! Reverting to generated version!

Und das ist alles was es gibt. Ich habe versucht, es manuell zu erstellen, habe aber keine Ergebnisse erhalten. 

Ich habe also zwei Fragen:

  1. was soll ich tun, um Eclipse zu zwingen, die Datei neu zu erstellen
  2. was passiert hier? Wie wird die Datei erstellt, wo ist der Code, der die Datei generiert?

Ich würde mich über jede Hilfe freuen. Wie üblich trat das Problem nur wenige Tage vor dem Abgabetermin auf :)

18
LambergaR

Ich habe das Problem gefunden - ich habe ein 9patch-Bild erstellt, bei dem der Patch-Bereich nur auf der Y-Achse definiert ist (ich habe versucht, die Größenänderung des anderen Bereichs zu verhindern).

Die Frage bleibt: Warum gibt es keine Warnung vor dem Fehler? Oder wenn es - wo ist es begraben?

3
LambergaR

Ich hatte ein Problem mit der Kompilierung meiner Android-App, mit scheinbar unerklärlichen Fehlern über das Generieren von R.Java. 

Das Problem wurde dadurch verursacht, dass ich zuvor den Android-Emulator während des Builds getötet hatte. Tu das nicht! Ein Hinweis war das Erscheinen mehrerer übrig gebliebener * .out.xml-Dateien.

Die Lösung bestand darin, das Projekt auszuwählen, auf Projekt-> Bereinigen zu klicken und dann alle * .out.xml-Dateien manuell zu löschen . Erst dann konnte ich auf Run-> Run klicken und einen erfolgreichen Build erstellen.

Noch etwas: Ich benutze Eclipse. Ich musste sicherstellen, dass das Projekt im Paket-Explorer ausgewählt wurde und nicht nur eine zufällige Quelldatei. Einfach nicht zu bemerken!

15
Stan Mohler Jr.

R.Java wird beim Build automatisch generiert. Ihr Inhalt basiert auf den Ressourcendateien (einschließlich Layouts und Voreinstellungen). 

Wenn Sie es gelöscht haben, wurde es neu erstellt, aber wenn Sie Ihr eigenes erstellen, werden Sie in Schwierigkeiten geraten, da das Buildsystem es nicht ersetzen wird.

Sie können es einfach wieder löschen (manuell oder durch Auswahl von Projekt → Reinigen) und das Programm neu erstellen.

7
Tomas

Ich hatte dieses Problem mehrmals, und meistens wird es durch einen Fehler in den "res" -Dateien verursacht. Überprüfen Sie, ob in allen Ihren res-Dateien alles OK ist, hauptsächlich XML, und nachdem Sie sie erstellt haben.

Zwei häufige Ursachen für dieses Problem können beispielsweise sein:

  • Der Name einer Eigenschaft in einem Style in einer XML-Datei wurde nicht richtig buchstabiert.

  • Eine Zeichenfolge in der XML-Datei einer Gebietsschemadatei wurde nicht ordnungsgemäß geschlossen.

4
Antonio

Ich hatte das gleiche Problem und es war so, dass ich eine Ressourcendatei (ein .png-Bild) mit Großbuchstaben benannt hatte. (ImageButton001.png statt imagebutton001.png).

Nachdem ich den Namen der Datei geändert hatte, kam meine R.Java zurück.

Rgards, Juan

2
Juan

Wenn nicht genügend freier Speicher zur Verfügung steht, schlägt das Build-Tool automatisch fehl (Eclipse zeigt keine Fehler an oder meldet nichts im Fehlerprotokoll). Schließen Sie Ihre anderen geöffneten Anwendungen (z. B. Emulator und Browser), fügen Sie der Anwendungsmanifestdatei ein Leerzeichen hinzu und speichern Sie sie. 

2
Lawrence

Entschuldigung, aber versuchen Sie die Ausgabe in Eclipse zu überprüfen. Möglicherweise haben Sie einige Fehler, die verhindern, dass Eclipse den Build-Prozess abschließt (überprüfen Sie Ihre AndroidManifest.xml, ist sie richtig?). Ich meine, Sie sollten alle Ihre Ressourcendateien (string.xml, Layouts, ...) und Schnittstellen überprüfen (* .aidl), gibt es möglicherweise Probleme (inkonsistente Syntax oder etwas ...), die die Generierung von R.Java durch Eclipse verhindern.

2
ponkin

Ich hatte dieses Problem, um R.Java neu zu erstellen. Ich schnitt den Code in der XML-Datei aus, an der ich gerade gearbeitet habe (oder probieren Sie andere aus, wenn dies nicht funktioniert). Löschen Sie die Datei, erstellen Sie eine andere mit demselben Namen und fügen Sie sie ein Code wieder hinein. Hoffe das hilft.

1
Jamesad

Ich hatte ein ähnliches Problem, ich hatte eine .wav-Datei im Raw-Ordner mit einem Großbuchstaben umbenannt. Als ich zu Kleinbuchstaben wechselte, bereinigte ich das Projekt und R.Javafeine.

1
nwestwood

Wie Ponkin feststellte, haben Sie wahrscheinlich ein einziges Problem, das dazu führt, dass R sich nicht neu generiert, weshalb Sie jetzt eine Million und ein Problem haben.

Versuchen Sie nicht, die R-Klasse selbst zu erstellen. Denken Sie an das letzte XML, mit dem Sie sich befasst haben, und überprüfen Sie es auf Fehler

Ich hatte das gleiche Problem hier

1
zorglub76

Wie andere bereits erwähnt haben, sollten Sie keine eigenen R.Java-Dateien erstellen. Ich hatte das gleiche Problem, als ich mit Android anfing, und es dauerte einige Zeit, um herauszufinden, was durch Kompilierungsfehler verursacht wurde.

Was haben Sie mit der R.Java-Datei versucht?

1
duanemat

Ich habe festgestellt, dass eine unerwünschte Ressource ein Problem verursacht hat. Sobald ich die Ressource gelöscht habe, wurde R. Java generiert.

1
FHan

Etwas, das gut zu wissen ist, ist, dass, wenn eine XML-Datei ein? Enthält, R.Java nicht neu erstellt wird und der Fehler nicht in der XML-Datei angezeigt wird (manchmal erscheint er nach einiger Zeit) Ich habe ein Zeile ähnlich wie:

< string name="questionmark"\>?< /string> <br> 

versuch das zu ändern? zu etwas anderem und sehen, was mit der R.Java-Datei passiert - hat für mich funktioniert

1
Jacob

Ich hatte das gleiche Problem. Ich ging gerade zu: 

Project -> Properties -> Android 

und wählte den richtigen Emulator für mein Projekt, ich hatte in diesem Moment 3 verschiedene zur Auswahl. Mir wurde klar, dass ich den Emulator in einem bestimmten Moment gewechselt habe. Versuchen Sie also, den Emulator zu ändern, das könnte helfen!

Viel Glück

1
Oliver

Stellen Sie sicher, dass Ihre Manifest-Datei keine Fehler enthält. Wenn Sie die Ressourcenzeichenfolge app_name in /res/values/strings.xml löschen, kann sie nicht das Recht für R.Java generieren. Ich habe festgestellt, dass dies ein Problem war, als ich das HelloSpinner-Tutorial durchführte.

1
Sven

Ich hatte das gleiche Problem mit IntelliJ. Das Problem war, dass ich app_name zweimal in strings.xml definiert hatte. Aus irgendeinem Grund haben IDEA-Inspektionen dies nicht automatisch erkannt.

0
Matt Hansen

Ich hatte ein ähnliches Problem. Das Reinigungsprojekt hat das Problem nicht gelöst, und es ist kein Fehler im Code oder in den Großbuchstaben oder Leerzeichen in Dateinamen aufgetreten.

Die Lösung wurde in einem Popup-Fenster geöffnet, in dem Sie PROJECT -> CLEAN wählen und dann die Option "Build sofort starten" deaktivieren. Reinigen Sie das Projekt. Schließen Sie Eclipse und öffnen Sie es erneut, und erstellen Sie dann das Projekt (PROJECT -> BUILD).

Die Frage bleibt, warum das einfache Reinigen und Bauen ohne Schließen von Eclipse nicht funktioniert hat. 

0
Pavi3l

Als Randbemerkung werden diese * .out.xml-Dateien normalerweise generiert, indem Sie versuchen, Ihr Projekt zu erstellen, während sich eine XML-Datei im Editor befindet

0
LairdPleng

Ich habe das auf einer anderen Seite gelesen und es hat mir geholfen:

"Wenn das Problem dadurch nicht behoben wird, ändern Sie Ihren AndroidManifest.xml (fügen Sie einfach ein Leerzeichen hinzu und speichern Sie). Ich habe gehört, dass der R.Java neu erstellt werden muss."

Fügen Sie also einfach ein Leerzeichen in die Manifestdatei ein und bauen Sie dann neu auf!

0
Jonas