43
votes

Le plugin Gradle «Kotlin-Android-Extensions» est obsolète

Avec la version 6.2 Gradle et Android Studio Version 4.0.1, j'ai le message de dépréciation pour le kotlin-android-extention . Tout corps a une idée de la façon de le réparer.


3 commentaires

Salut Ali Kotlin-Android-Extension a été obsolète, vous devriez envisager d'utiliser View Binding, Blog de paie "> ViewBinding


Salut @Chetangupta, merci pour votre commentaire. Oui, tu as raison. J'ai juste aimé la réponse et ça marche bien pour moi.


Suivez ce doc - Developer.android.com/topic/libraries/view-binding/ migration


8 Réponses :


54
votes

C'est une base obsolète sur le document google

Les extensions Android de Kotlin sont obsolètes, ce qui signifie que l'utilisation de Kotlin Les synthétiques pour la liaison de vue ne sont plus prises en charge.

pour ceux qui se demandent ce qu'est le synthétique . Je devrais dire un moyen simple d'accéder à l'ID de vue d'interface utilisateur avec Kotlin, ce qui a été possible en ajoutant 'Kotlin-Android-Extensions' dans gradle .

.
  • Si votre application utilise parcelable, vous pouvez utiliser 'kotlin-parcelize' au lieu de 'kotlin-android-extensions' .
  • Si votre application utilise les synthétiques de Kotlin pour la liaison de la vue, utilisez ce guide pour migrer vers Jetpack ViewBinding ou liaison des données .

3 commentaires

Savez-vous s'il y a des délais lorsque vous avez absolument besoin de remplacer les synthétiques dans votre code?


@natansalda Je n'ai pas trouvé de jour spécifique pour cela. Il est principalement basé sur votre version Android Studio.


Pour moi - en avril 2022, cette extension a cessé de fonctionner.



21
votes

Il est désormais obsolète

  • Supprimez 'kotlin-android-extension' du plugin. (Utilisé pour la manière synthétique de Kotlin d'accéder aux éléments d'interface utilisateur)

  • Ajouter ci-dessous pour utiliser afficher la liaison façon d'accéder à l'élément d'interface utilisateur

    android {
       ...
       buildFeatures {
           viewBinding true
       }
    }
    
  • Si votre application contient parilable , veuillez ajouter 'kotlin-parcelize' dans le plugin pour utiliser un moyen simple de créer la parcelable en ajoutant simplement @ PARCELIZE Annotation à la classe

Vous pouvez voir le GOOD LIGNIVERSTIQUE En ce qui concerne cela Mise à jour.


0 commentaires

2
votes

Les réponses ci-dessus sont correctes, mais lorsque vous supprimez `` Kotlin-Android-Extensions '' de votre projet, l'accès aux propriétés de vue en utilisant la manière synthétique de Kotlin ne sera pas possible, vous devez donc migrer pour utiliser la liaison de la vue, suivez ceci Google Guide pour la migration pour voir la liaison: lien


0 commentaires

0
votes

Comme déjà indiqué, la synthétique de Kotlin est obsolète et doit être remplacée par la liaison de la vue. Dans mon cas, je voulais introduire la liaison de la vue et migrer progressivement à partir des synthétiques de Kotlin. Il est possible d'avoir les deux dans un seul projet, il vous suffit de ne pas vous rappeler de ne pas mettre à jour la version Kotlin - j'ai eu une erreur de construction avec 4.1.21 , donc nécessaire pour rétrograder vers 1.4.10 .

N'oubliez pas non plus de supprimer les importations de synthétiques de Kotlin à partir d'une classe (généralement l'activité / fragment), qui a été migrée vers la liaison de la vue.


0 commentaires

7
votes

Comme "kotlin-android-extensions" est désormais obsolète, il est préférable d'utiliser la liaison de la vue.

Pour cette première liaison de vue d'activer le fichier build.gradle en écrivant ces codes sous Android Block.

xxx

puis dans le fichier d'activité pour utiliser les fonctionnalités de liaison de la vue

Déclarez d'abord une variable globale pour la liaison comme

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

ici ActivityMainbinding est une classe générée automatique

puis écrivez ces codes dans la méthode onCreate ()

private lateinit var binding:ActivityMainBinding


0 commentaires

-3
votes

J'ai eu cette erreur pour une raison complètement différente. J'ai oublié d'ajouter la classe d'application personnalisée où j'ajoute Hiltannotation dans le fichier manifeste:

<application
        android:name=".MyApplication"


0 commentaires

1
votes

Google fournit une nouvelle manière de liaison à la vue au lieu de «Kotlin-android-Extensions». Ajout des plugins suivants dans build.gradle du module d'application.

    android {
    ...
    buildFeatures {
        viewBinding true
    }
}


0 commentaires

4
votes

À mon avis, l'utilisation de ce plugin est toujours meilleure que les méthodes introduites, nous avons juste besoin de prêter attention aux ID. Parce qu'avec le plugin Android Kotlin Extensions Gradle sorti en 2017 est venu Kotlin Synthetics. Pour chaque fichier de mise en page, Kotlin Synthetics crée une classe autoogène contenant votre vue - aussi simple que cela. Il vous suffit d'importer ce plugin dans votre fichier gradle, et vous êtes tous configurés pour vous référer directement aux variables de référence de vue. Il appelle FindViewByid en interne une seule fois, puis le met en cache. C'était tellement pratique et si amusant à utiliser, alors pourquoi est-il déconseilé Analysons-le. Avantages Pas de code de passe-partout - Configurez-le simplement une fois dans votre fichier gradle et vous êtes prêt à partir. Kotlin Synthetics générera automatiquement une classe prête à utiliser. Type Sécurité - Toutes les vues sont choisies dans votre fichier de mise en page avec le type connu. Les inconvénients Sécurité nul partielle - il est généralement sûr de toute sécurité car toutes vos vues doivent être présentes dans le fichier de mise en page pour qu'elle puisse générer. Mais que se passe-t-il si vous disposez de plusieurs fichiers de mise en page basés sur des configurations où certaines vues sont présentes dans certains fichiers de mise en page et manquantes dans certains? Ici, vous devez ensuite vérifier manuellement Null. Pollute l'espace de noms - vous pouvez avoir le même ID de vue dans différentes mises en page, et vous pouvez accidentellement importer une vue d'une autre mise en page, qui sera ultérieurement à l'exécution NullPointerException. Kotlin uniquement - Les synthétiques de Kotlin ne peuvent être utilisées qu'avec Kotlin. Ils ne sont pas soutenus par Java. Il y a encore des projets qui sont écrits en Java et qui peuvent ne pas encore être entièrement migrés vers Kotlin, et donc les synthétiques de Kotlin peuvent ne pas être un moyen cohérent d'obtenir les Viewids dans votre projet. En raison de ces problèmes, la synthétique de Kotlin est désormais déconseillée.

Maintenant, c'est à vous de décider si vous souhaitez toujours utiliser ce plugin comme moi si vous souhaitez corriger un avertissement obsolète, vous devez éviter d'utiliser la méthode obsolète.😊


0 commentaires