with the Gradle version 6.2 and Android studio version 4.0.1, I have the deprecation message for the Kotlin-android-extention
. any body has any idea how to fix it.
It's deprecated Base on the google document
Kotlin Android Extensions is deprecated, which means that using Kotlin synthetics for view binding is no longer supported.
for those who's wonder what the synthetic
is. I should say a simple way to access to UI view id with kotlin which was possible by adding 'kotlin-android-extensions'
in Gradle
.
'kotlin-parcelize'
instead of 'kotlin-android-extensions'
.It's deprecated now
Remove 'Kotlin-android-extention'
from the plugin. (Used for kotlin's synthetic way to access UI elements)
Add below to use view binding
way to access UI element
android {... buildFeatures { viewBinding true } }
If your app contains Parcelable
, please add 'kotlin-parcelize'
in plugin to use a simple way to create parcelable by just adding @Parcelize
annotation to class
You can see the Google guideline regarding this update.
The above answers are correct, but when you remove 'kotlin-android-extensions' from your project, accessing view properties using kotlin's synthetic way won't be possible, so you need to migrate to use view binding, follow Google's this guide for migrating to view binding: link
As "kotlin-android-extensions" is deprecated now it's better to use view binding.
For this first enable view binding in build.gradle file by writing these line of codes under android block.
buildFeatures {
viewBinding true
}
then in activity file to use view binding features
first declare a global variable for binding as
private lateinit var binding:ActivityHomeBinding
Here ActivityHomeBinding is a auto generated class
then write these codes in OnCreate() method
binding = ActivityHomeBinding.inflate(layoutInflater)
setContentView(binding.root)
As already stated, Kotlin Synthetics is deprecated and should be replaced by View Binding. In my case I wanted to introduce View Binding and gradually migrate from Kotlin Synthetics. It's possible to have both in one project, you just need to remember not to update Kotlin version - I had a build error with 4.1.21
, so needed to downgrade to 1.4.10
.
Also remember to delete Kotlin Synthetics imports from a class (usually activity/fragment), which has been migrated to using View Binding.
If the project has huge number of synthetic references and you want to postpone ViewBinding migration as for now, you can use this gradle task to generate Kotlin snythetic code without the "Kotlin android extensions" plugin
https://github.com/sanjeevirajm/kotlin_synthetic_undepreciated
Google privides a new view-binding way instead of 'kotlin-android-extensions'. Adding the following plugins in build.gradle of app module.
android {
...
buildFeatures {
viewBinding true
}
}
Well, I got this error for a completely different reason. I forgot to add the custom application class where I add hiltannotation in the manifest file.
<application
android:name=".MyApplication"
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.