85
votes

Comment utiliser @Parcelize maintenant que Kotlin-Android-Extensions est en cours de dépréciation?

Comment remplacer Classe d'annotation paille à partir de package kotlinx.android.parcel avec parice qui ne provient pas du plugin kotlin-android-extensions?


0 commentaires

5 Réponses :


42
votes

Tout d'abord, vous devrez d'abord ajouter le plugin kotlin-parcelize dans votre module.

import kotlinx.parcelize.Parcelize

puis modifiez votre ancienne instruction d'importation de

import kotlinx.android.parcel.Parcelize


6 commentaires

Merci d'avoir répondu. Où exactement ce bloc de code des plugins {} est-il censé entrer? Dans le fichier Gradle au niveau du projet ou le fichier Gradle au niveau de l'application?


J'ai trouvé la réponse. Ce n'est pas encore disponible dans la version stable Kotlin actuelle - moyen.com/ @ drjacky / where-soulf-we-add-plagins-b85517b8a62f


@ G00fy «kotlin-parcelize» et «org.jetbrains.kotlin.plugin.parcelize» fonctionnent pour moi.


Qu'en est-il de cette ligne: classpath "org.Jetbrains.kotlin: kotlin-android-extensions: $ kotlin_vers‌ ion"


Veuillez ajouter que le plugin kotlin-parcelize est séparé uniquement après Kotlin version 1.4.20 et ne sera pas trouvé en dessous.


J'ai 2 projets, on fonctionne avec perfact avec ce que j'ai, comme AndroidStudio 3.4, dans Project Build (Gradle Version-3.4.1, ext.kotlin_version = '1.3.61') La version du plugin IDE Kotlin est 1.3.61. L'un des projets consiste à lancer une erreur comme "Kotlin_module: le module a été compilé avec une version incompatible de Kotlin. La version binaire de ses métadonnées est 1.5.1, la version attendue est 1.1.16." Pouvez-vous suggérer n'importe quelle solution. Je suis confronté depuis 2-3 semaines.



173
votes

Cela devrait être le nouveau plugin: https: //plugins.gradle .org / plugin / org.jetbrains.kotlin.plugin.parcelize

Si vous utilisez les plugins dsl Vous pouvez utiliser l'ID de plugin en sous-modules. Assurez-vous que le dernier plugin Kotlin Android est disponible à partir du ClassPath du projet.

import kotlinx.parcelize.Parcelize

Lorsque vous utilisez KTS, vous pouvez écrire ->

import kotlinx.android.parcel.Parcelize


6 commentaires

L'étape 2 manquait dans d'autres descriptions et résolvait mon problème, merci.


Je suis nouveau dans Android Development et je n'ai aucune idée que kotlinx n'a pas pakilize sous-module (?).


Quelle est la pièce project build.gradle pour? Cela ne semble pas être nécessaire


@Florianwalther L'identifiant "Kotlin-Parcelize" fait partie du plugin Android Kotlin. Vous devez donc avoir le plugin Kotlin Android dans votre chemin de classe. Peut-être l'avez-vous ajouté avec l'ancienne syntaxe de ClassPath? Ou vous avez un seul module Android (module APP) et ajoutez tous les plugins uniquement là-bas. Ensuite, vous n'avez pas besoin de le définir dans votre projet Build.gradle Gradle.


@ G00fy Merci pour la clarification. J'ai le plugin kotlin-android qui est ajouté à un nouveau projet par défaut.


Même après le retrait, appliquez le plugin: «Kotlin-android-extensions» peut toujours voir le package kotlinx.android.parcel.parcelize peut être utilisé. Donc est confondu avec l'importation kotlinx.parcelize.parcelize dois-je également supprimer autre chose?



7
votes

avec groovy

build.gradle (niveau de projet)

import android.os.Parcelable
import kotlinx.parcelize.Parcelize

@Parcelize
class User(
    val firstName: String, 
    val lastName: String, 
    val age: Int
): Parcelable

build.gradle (niveau de l'application . /plugins.gradle.org/plugin/org.jetbrains.kotlin.plugin.parcelize "rel =" nofollow noreferrer "> https://plugins.gradle.org/plugin/org.Jetbrains.kotlin.plugin.parcelize / a >


0 commentaires

0
votes

Mettez simplement à jour votre importation

De: Importer kotlinx.android.parcel.parcelize

à: Importer kotlinx.parcelize.parcelize


0 commentaires

1
votes
  • kotlin-android-extensions est obsolète, alors remplacez-le de kotlin-parcelize
  • S'il y a @Parcelize Annotation utilisé pour les classes de modèles, vous devez donc remplacer son importation de kotlinx.android.parcel.parcelize pour importer kotlinx.parcelize.parcelize < / li>

  • 0 commentaires