Das Gradle-Plugin „kotlin-android-extensions“ ist veraltet

Lesezeit: 4 Minuten

Mit der Gradle Version 6.2 und Android Studio Version 4.0.1 habe ich die Deprecation-Meldung für die Kotlin-android-extention. Jeder Körper hat eine Idee, wie man es repariert.

  • Hi Ali Kotlin-android-extension is deprecated, Sie sollten in Betracht ziehen, View Binding, Checkout Blog für detaillierte Erklärungen und Anti-Patterns zu verwenden Sichtbindung

    – Chetan Gupta

    24. Dezember 2020 um 11:35 Uhr

  • Hallo @ChetanGupta, danke für deinen Kommentar. Ja, du hast recht. Ich mochte die Antwort und es funktioniert gut für mich.

    – Ali Shatergholi

    25. Dezember 2020 um 13:52 Uhr

  • Folgen Sie diesem Dokument – developer.android.com/topic/libraries/view-binding/migration

    – Ranjithkumar

    3. April um 22:10 Uhr

Es ist veraltet Base on the Google-Dokument

Kotlin Android Extensions ist veraltet, was bedeutet, dass die Verwendung von Kotlin Synthetics für die Ansichtsbindung nicht mehr unterstützt wird.

für diejenigen, die sich fragen, was die synthetic ist. Ich sollte sagen, eine einfache Möglichkeit, mit kotlin auf die UI-Ansichts-ID zuzugreifen, was durch Hinzufügen möglich war 'kotlin-android-extensions' in Gradle.

  • Wenn Ihre App Parcelable verwendet, können Sie verwenden 'kotlin-parcelize' Anstatt von 'kotlin-android-extensions'.
  • Wenn Ihre App Kotlin Synthetics für die Ansichtsbindung verwendet, verwenden Sie diese Anleitung, um zu Jetpack zu migrieren ViewBinding oder Datenbindung.

  • Wissen Sie, ob es einen Stichtag gibt, an dem Sie Synthetics in Ihrem Code unbedingt ersetzen müssen?

    – Natansalda

    23. August 2021 um 10:32 Uhr

  • @natansalda Ich habe dafür keinen bestimmten Tag gefunden. Es basiert hauptsächlich auf Ihrer Android-Studio-Version.

    – Ali Shatergholi

    24. August 2021 um 6:49 Uhr


  • Für mich -Seit April 2022 funktioniert diese Erweiterung nicht mehr.

    – UNWIRKLICH

    17. Mai um 10:47 Uhr

Benutzeravatar von Amir Raza
Amir Raza

Es ist jetzt veraltet

  • Entfernen 'Kotlin-android-extention' aus dem Plugin. (Wird für Kotlins synthetische Methode zum Zugriff auf UI-Elemente verwendet)

  • Unten zur Verwendung hinzufügen view binding Zugriff auf das UI-Element

    android {
       ...
       buildFeatures {
           viewBinding true
       }
    }
    
  • Wenn Ihre App enthält Parcelablebitte hinzufügen 'kotlin-parcelize' im Plugin, um auf einfache Weise durch einfaches Hinzufügen parzellierbar zu erstellen @Parcelize Anmerkung zur Klasse

Du kannst das … sehen Google-Richtlinie bezüglich dieses Updates.

Benutzeravatar von Geek Tanmoy
Aussenseiter Tanmoy

Da “kotlin-android-extensions” jetzt veraltet ist, ist es besser, die Ansichtsbindung zu verwenden.

Aktivieren Sie dazu zunächst die Ansichtsbindung in der Datei build.gradle, indem Sie diese Codezeile unter den Android-Block schreiben.

buildFeatures {
    viewBinding true
} 

dann in der Aktivitätsdatei, um Ansichtsbindungsfunktionen zu verwenden

Deklarieren Sie zuerst eine globale Variable zum Binden als

private lateinit var binding:ActivityMainBinding

Hier ist ActivityMainBinding eine automatisch generierte Klasse

Schreiben Sie diese Codes dann in die Methode OnCreate()

binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)

Meiner Meinung nach ist die Verwendung dieses Plugins immer noch besser als die vorgestellten Methoden, wir müssen nur auf IDs achten. Denn mit dem 2017 veröffentlichten Android Kotlin Extensions Gradle Plugin kam Kotlin Synthetics. Für jede Layoutdatei erstellt Kotlin Synthetics eine automatisch generierte Klasse, die Ihre Ansicht enthält – so einfach ist das. Sie müssen dieses Plugin nur in Ihre Gradle-Datei importieren, und schon können Sie direkt auf die View-Referenzvariablen verweisen. Es ruft findViewById nur einmal intern auf und speichert es dann. Das war so praktisch und hat so viel Spaß gemacht, also warum wird es veraltet? Lassen Sie es uns analysieren. Vorteile Kein Boilerplate-Code – Konfigurieren Sie ihn einfach einmal in Ihrer Gradle-Datei und Sie können loslegen. Kotlin Synthetics generiert automatisch eine Klasse, die Sie verwenden können. Typsicherheit — Alle Ansichten werden aus Ihrer Layoutdatei mit dem ihr bekannten Typ ausgewählt. Nachteile Teilweise Null-Sicherheit – Es ist im Allgemeinen null-sicher, da alle Ihre Ansichten in der Layout-Datei vorhanden sein müssen, damit sie generiert werden kann. Was aber, wenn Sie mehrere Layoutdateien basierend auf Konfigurationen haben, bei denen einige Ansichten in einigen Layoutdateien vorhanden sind und in einigen fehlen? Hier muss man dann manuell auf null prüfen. Verunreinigt den Namensraum – Sie können dieselbe Ansichts-ID in verschiedenen Layouts haben, und Sie können versehentlich eine Ansicht eines anderen Layouts importieren, was später zur Laufzeit eine NullPointerException auslöst. Nur Kotlin – Kotlin Synthetics kann nur mit Kotlin verwendet werden. Sie werden von Java nicht unterstützt. Es gibt immer noch Projekte, die in Java geschrieben sind und möglicherweise noch nicht vollständig zu Kotlin migriert wurden, und daher ist Kotlin Synthetics möglicherweise keine konsistente Methode, um die ViewIds in Ihrem Projekt zu erhalten. Aufgrund dieser Probleme ist Kotlin Synthetics jetzt veraltet.

Jetzt liegt es an Ihnen zu entscheiden, ob Sie dieses Plugin weiterhin wie ich verwenden möchten, wenn Sie veraltete Warnungen beheben möchten, müssen Sie die Verwendung der veralteten Methode vermeiden.😊

Die obigen Antworten sind richtig, aber wenn Sie „kotlin-android-extensions“ aus Ihrem Projekt entfernen, ist der Zugriff auf Ansichtseigenschaften mit kotlins synthetischer Methode nicht möglich, daher müssen Sie migrieren, um die Ansichtsbindung zu verwenden. Befolgen Sie diese Anleitung von Google für die Migration Bindung anzeigen: Verknüpfung

Google bietet anstelle von “kotlin-android-extensions” einen neuen View-binding-Weg an. Hinzufügen der folgenden Plugins in build.gradle des App-Moduls.

    android {
    ...
    buildFeatures {
        viewBinding true
    }
}

Wie bereits erwähnt, ist Kotlin Synthetics veraltet und sollte durch View Binding ersetzt werden. In meinem Fall wollte ich View Binding einführen und schrittweise von Kotlin Synthetics migrieren. Es ist möglich, beides in einem Projekt zu haben, Sie müssen nur daran denken, die Kotlin-Version nicht zu aktualisieren – ich hatte einen Build-Fehler mit 4.1.21also musste auf heruntergestuft werden 1.4.10.

Denken Sie auch daran, Kotlin Synthetics-Importe aus einer Klasse (normalerweise Aktivität/Fragment) zu löschen, die zur Verwendung von View Binding migriert wurde.

1394520cookie-checkDas Gradle-Plugin „kotlin-android-extensions“ ist veraltet

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy