Ich bin neu bei Kotlin, ich habe etwas Code von Java konvertiert, aber es scheint, als wäre da etwas nicht in Ordnung. Ich habe nach einer Lösung gesucht, aber ich scheine es nicht herauszufinden. Was soll ich tun? Hier ist ein Screenshot:
Das Problem kann durch viele Faktoren verursacht werden,
com.Android.tools.build:gradle
verursacht. Wenn Sie die Version auf eine stabilere Version ändern, wird das Problem behoben: Zum Beispiel: com.Android.tools.build:gradle:3.4.0-alpha02
mit com.Android.tools.build:gradle:3.2.1
Außerdem können Bibliotheken aus derselben Gruppe, jedoch mit unterschiedlichen Versionen, das Problem oder noch mehr Laufzeitfehler verursachen. Verwenden Sie die Methode "Gruppe ausschließen" wie folgt: implementation('com.squareup.picasso:picasso:2.71828') { exclude(group: 'com.Android.support') }
In diesem Fall verwendet die Picasso-Bibliothek Android.support-Komponenten. Die in Picasso verwendete Bibliotheksversion Android=) unterscheidet sich von der von Ihnen wird derzeit in Ihrer App verwendet. Um dieses Problem zu beheben, müssen wir es vollständig aus der Unterbibliothek und den Klassengruppen ausschließen.
Es kann auch vorkommen, dass Ressourcen und Code nicht übereinstimmen. Wenn Sie diese Importzeile in Ihre Aktivität aufnehmen, kann das Problem möglicherweise auch behoben werden: import com.package.name.R
Build -> Clean Project / Rebuild Project
- Reinigung IDE Geld hilft auch bei Leistung und Speicher, auf Android = Studio sieht es so aus: File-> Invalidate Chases/ Restart -> Invalidate Cashes and Restart
. , , - , UpperCase or special Letters
.kotlinx.Android.synthetic.main.activity_page.*
Oder Wenn Sie eine benutzerdefinierte Ansicht verwenden: kotlinx.Android.synthetic.main.view_layout.view.*
Danach haben Sie in der onCreat () -Methode einer Aktivität nur noch Um die ID aufzurufen, zum Beispiel: my_edit_text_ID.text = "Kotlin Dbest!"
oder in einer benutzerdefinierten Ansicht: mCostumView.my_edit_text_ID.text = "Kotlin Dbest!"
EDIT:
Ich habe mich erneut mit diesem Problem befasst und das Problem war, dass die Bibliothek '' R '' aus zwei verschiedenen Quellen importiert wurde:
com.Android.R
com.example.package.R
Sie müssen nur die Bibliothek '' R '' mit Ihrem Anwendungspaketnamen importieren, in diesem Fall com.example.package.R
. Manchmal wird die Bibliothek überhaupt nicht importiert. Klicken Sie zum Importieren auf die nicht aufgelöste Referenz R
. und drücke Alt + Enter
Ich habe com.Android.tools.build:gradle:3.3.0-alpha13 verwendet und hatte das gleiche Problem. Der Wechsel zur stabilen Version 3.2.1 hat dieses Problem für mich gelöst.
Das ist also ein irreführender Fehler.
Ich werde die 30.000 Fuß-Ansicht von dem erläutern, was passiert. Dies ist weder eine exakte Reihenfolge noch ein exakter Ablauf, es ist einfach verdammt nah;) Wenn Sie also mehr wissen, dann mache ich die genaue Reihenfolge und sorge mich dafür, Korrekturen mit Links vorzunehmen. Fühlen Sie sich frei.
Der Prozess
Die R-Datei wird Code generiert.
Es gibt eine Ordnung für die Generation.
Gradle wird es magisch machen, seine Abhängigkeiten ziehen und loslegen Warnungs- und Fehlerbaum zuerst,
dann konvertiert Android alles Kotlin hinter den Kulissen in Java. Ja, das ist Richtig, unser geliebter Kotlin muss noch Java sein, um für unser .__ zu kompilieren. beliebte virtuelle Maschine von ART.
Dann läuft es durch und führt die Adapter aus, die Sie für .__ erstellt haben. JVM-Statik und einige andere Aufgaben . Als Nächstes werden alle XML-Datenbindungsdateien kompiliert, um die .__-Datei zu erstellen. generierte Datenbindungsdateien.
Wenn alles erfolgreich ist, werden die Assets und .__ verarbeitet. Ressourcen. Dadurch werden Zeiger oder IDs für jede Ressource erstellt, die Sie Referenz im Code. Als nächstes wird es durchlaufen und mit dem Kompilieren von .__ beginnen. Code und Verpackungsprozess danach.
Ziemlich direkter Prozess, aber hier liegt das Problem.
Der irreführende Fehler
Wenn ein Schritt fehlschlägt, bevor die R-Generierung abgeschlossen ist, wird der R nicht generiert. Manchmal reicht eine einfache Neuerstellung aus, manchmal nur ein einfacher File-> Invalidate Cache and Restart. In der Regel haben Sie jedoch ein Codeproblem in Ihrem Gradle, in Ihrer XML-Datei, in Ihrer Datenbindung oder in Ihren Adaptern, die den Compiler daran hindern, die Stufe der R-Generierung zu erreichen.
Die nächste Frage ist also
"Nun schießen, wie können wir es beheben, wenn die Fehler wertlos sind oder Nicht vorhanden ist".
Lassen Sie uns zuerst über die vielen Möglichkeiten sprechen, die diese Fehler darstellen.
Als nächstes wollen wir über mögliche Kandidaten sprechen, die das Problem verursachen. Da gibt es sooo viele Lol.
Unglücklicherweise geschieht dies häufig bei der Technologie "Bleeding Edge", bei der die UI-Tools noch nicht mit den auf Terminals basierenden Tools auf dem neuesten Stand sind. Also ich schlage vor, Sie laufen vom Projektstamm aus in ein Terminal mit
bash gradlew assembleRelease --debug
Wenn es versagt, und es wird. Beginnen Sie, durch die Protokolle zu scrollen, bis Sie den roten Punkt sehen, an dem Sie sehen, was tatsächlich fehlgeschlagen ist, und verhindern Sie, dass die nächste Stufe auftritt.
Sie werden dies besonders nützlich finden, wenn Sie mit dem Datenbinden beginnen. TIPP: .
Wenn Sie sich mit dem Datenbinden befassen, stellen Sie sicher, dass Sie häufig kompilieren und ausführen, da das Ziel darin besteht, sofort zu erkennen, bevor Sie andere Dateien verwenden, um sicherzustellen, dass Sie die Generierung nicht unterbrochen haben und Ihr Leben um vieles viel einfacher zu wissen, was Sie gerade verursacht haben bevor es zu weit geht.
Zeit zum Kompilieren und Ausführen, um keine Probleme zu bestätigen, bevor Sie fortfahren.
.
Glückliche Kodierung.
Happy Coding
Verwenden Sie Gradle-Befehle.
In Android Studio im rechten Menü:Gradle -> :app -> Tasks -> build -> clean
.
Danach Gradle -> :app -> Tasks -> build -> build
Ich hatte das gleiche Problem und versuchte nicht von Gradle 3.3 auf Gradle 3.2.1 herunterzusteigen. Stattdessen habe ich Android Studio auf Version 3.3 aktualisiert, was den Trick für mich gemacht hat ;-)
Das hat bei mir funktioniert. Wie viel Arbeit das kostet, hängt davon ab, wie groß Ihr Projekt ist. Ich habe ein neues Projekt gestartet, die erforderlichen Module erstellt (XML, Kotlin, Farben, Zeichenfolgen usw.) und dann den Code aus den Modulen des alten Projekts in die Module des neuen Projekts kopiert. Das Kopieren von XML spart im Vergleich zur Neuerstellung der Benutzeroberfläche viel Zeit. Alles in allem dauert es eine Weile, aber ich habe viel mehr Zeit damit verbracht, den ungelösten Referenzfehler ohne ihn zu beheben.
Das Downgrade der Gradle-Version hat bei mir funktioniert.
Ich habe mich verändert :
Gradle-Version von: 4.10.4 bis 4.4.1
und Gradle Plugin Version von: 3.3.1 bis 3.1.3
Ich habe Android Studio auf Version 3.3.1 aktualisiert und dieses Problem behoben.
VERSUCHE DIES
Gehen Sie zur Datei content_main.xml und dort müssen Sie die Datei ändern
Android:id="@+id/??????">
Codezeile zu der ID, die Sie Ihrer Datei gegeben haben.
Ersetzen Sie das Fragezeichen ??????
durch den ID-Namen der zugehörigen Datei (WENN Sie die ID nicht kennen, wechseln Sie zur Design-Registerkarte am unteren Rand und klicken Sie auf das entsprechende Asset.
Auf der rechten Seite unter den Attributen finden Sie die ID, die Sie ihm zugewiesen haben .. Wenn sie leer ist, können Sie sie neu benennen, und Android Studio schreibt den Code.
Starten Sie dann Android Studio neu. Hoffe das wird helfen. Glückliche Kodierung.
Ich hatte das gleiche Problem mit R. Referenz ..__ Schließlich wurde Android Studio 3.3 veröffentlicht und mit 'com.Android.tools.build:gradle:3.3.0'
wurde das Problem behoben!
Ich glaube, dass ich auf die wirkliche Antwort gestoßen bin (allerdings durch Zufall).
Ich hatte auch, als das OP meine KT-Datei an Position R. nicht finden konnte, sowie an anderen Klassen, die zufällig in Java sind. Was mir auffiel, war, dass es einen Unterschied zwischen den Dateinamen gab. Nachdem ich die Importanweisungen korrigiert hatte, um mit dem Fall des Pakets (aka, Ordner) übereinzustimmen, wurden die Fehler behoben.