disable kotlin-android-extensions deprecation warning

Viewed 38732
4 Answers

I also recently faced this problem and found out.

In Kotlin 1.4.20-M2, JetBrains deprecated the Kotlin Android Extensions compiler plugin in favor of View Binding, and Also, Google is promoting modularisation, but synthetic properties don’t work cross-module.

So to fix this warning. Remove apply plugin: 'kotlin-android-extensions' in your build.gradle file

Note: If you're using Parcelize.

Don’t forget that the Parcelize feature in Kotlin is part of the kotlin-android-extensions compiler plugin, so removing the plugin will end up making all your Parcelable classes not compiling if they depend on the Parcelize annotation.

JetBrains extracted the Parcelize from Kotlin Android Extensions to a new plugin, kotlin-parcelize

First, you will need to add kotlin-parcelize plugin to your project build.gradle file.

Plugins {
   ...
   id 'kotlin-parcelize'
}

Then change your old import statement from

import kotlinx.android.parcel.Parcelize

to

import kotlinx.parcelize.Parcelize

For more info, I recommend you to read this Blog Migrating the deprecated Kotlin Android Extensions compiler plugin

Just you need to remove this line from your Gradle:

apply plugin: 'kotlin-android-extensions'

Follow the steps:

  1. kotlin-android-extensions is deprecated so replace it from kotlin-parcelize
  2. If there is @Parcelize annotation used for model classes so you have to replace its import from kotlinx.android.parcel.Parcelize to import kotlinx.parcelize.Parcelize

The report is a warning that you are using a deprecated plugin, I don't understand why you would want to disable it since sooner or later I expect the compile will fail and you may not remember why.

The article says: "If your app does not use Parcelize features, remove the line that enables Kotlin Android Extensions: (aka, just remove the line apply plugin: 'kotlin-android-extensions'). It may turn out you don't need the plugin, hard to say since you didn't indicate if you are using any features supplied by the deprecated plugin.

If you are annotating any classes with 'Parcelable' then there is a bit or work you will need to do, as indicated in the article.

Edit: also gone is view synthetics (the feature that allowed you to not use all those 'findViewById'. that's (IMO) is the larger loss and I have not yet ported my apps over so I cannot comment on the amount of work it will take to move.

For the immediate future, I've chosen to wait and implement the new code later but you will need to make your own decision as to when it's appropriate to migrate away from the deprecated plugin.

Related