对于Gradle版本6.2和Android Studio版本4.0.1,我收到了Kotlin-android-extention的弃用消息。任何机构都知道如何修复它。
Kotlin-android-extention
xzlaal3s1#
已过时基于google document
KotlinAndroid Extensions已弃用,这意味着不再支持使用Kotlin synthetics进行视图绑定。对于那些想知道synthetic是什么的人,我应该说一种用Kotlin访问UI视图id的简单方法,通过在Gradle中添加'kotlin-android-extensions'是可能的。
synthetic
Gradle
'kotlin-android-extensions'
'kotlin-parcelize'
t40tm48m2#
现在已弃用
'Kotlin-android-extensions'
view binding
android { ... buildFeatures { viewBinding true } }
Parcelable
@Parcelize
您可以查看有关此更新的Google guideline。
fsi0uk1n3#
由于“kotlin-android-extensions”现在已被弃用,因此最好使用视图绑定。为此,首先在build.gradle文件中启用视图绑定,方法是在android块下编写这些代码行。
buildFeatures { viewBinding true }
然后在活动文件中使用视图绑定功能首先将用于绑定的全局变量声明为
private lateinit var binding:ActivityMainBinding
这里的ActivityMainBinding是自动生成的类然后在OnCreate()方法中编写这些代码
binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root)
hiz5n14c4#
在我看来,使用这个插件仍然比介绍的方法更好,我们只需要注意ID。因为随着AndroidKotlinExtensions Gradle插件在2017年发布,Kotlin Synthetics。对于每个布局文件,Kotlin Synthetics创建一个包含您的视图的自动生成的类-就这么简单。您只需要在您的Gradle文件中导入这个插件,并且都设置为直接引用视图引用变量,它只在内部调用findViewById一次,然后缓存它,这非常方便,使用起来也非常有趣,那么为什么它被弃用了呢?让我们来分析一下。优点:没有样板代码-只需在Gradle文件中配置一次,就可以开始使用了。KotlinSynthetics会自动生成一个类供您使用。类型安全-所有视图都是从布局文件中选取的,并且类型是已知的。缺点部分空值安全-它通常是空值安全的,因为所有视图都必须存在于布局文件中才能生成。但是,如果您有多个基于配置的布局文件,其中一些视图出现在一些布局文件中,而在一些布局文件中丢失,该怎么办?在这里,您必须手动检查是否为null。污染名称空间-您可以在不同的布局中拥有相同的视图ID,并且你可能会不小心导入一个其他布局的视图,这将在运行时抛出NullPointerException。仅限Kotlin- Kotlin合成只能和Kotlin一起使用。Java不支持它们。仍然有一些项目是用Java编写的,可能还没有完全移植到Kotlin,因此Kotlin可能不是在项目中获取ViewId的一致方法。由于这些问题,KotlinSynthetics现在被弃用。现在由你来决定你是否还想像我一样使用这个插件如果你想修复过时的警告,你必须避免使用过时的方法。😊
qacovj5a5#
上面的答案是正确的,但是当你从你的项目中删除'kotlin-android-extensions'时,使用kotlin的合成方式访问视图属性将是不可能的,所以你需要迁移以使用视图绑定,请按照Google的这个指南迁移到视图绑定:连结
eagi6jfj6#
Google提供了一种新的视图绑定方式来代替“kotlin-android-extensions”。在应用模块的build.gradle中添加以下插件。
2jcobegt7#
如前所述,KotlinSynthetics已经过时,应该被View Binding取代。在我的例子中,我想引入View Binding,并逐渐从Kotlin Synthetics迁移过来。在一个项目中可以同时拥有这两个版本,你只需要记住不要更新Kotlin版本-我在4.1.21的时候有一个构建错误,所以需要降级到1.4.10。另外,请记住从类(通常是Activity/fragment)中删除KotlinSynthetics导入,该类已使用视图绑定迁移到。
4.1.21
1.4.10
vu8f3i0k8#
我得到这个错误是因为一个完全不同的原因。我忘了在清单文件中添加hiltannotation的地方添加自定义应用程序类:
<application android:name=".MyApplication"
8条答案
按热度按时间xzlaal3s1#
已过时基于google document
KotlinAndroid Extensions已弃用,这意味着不再支持使用Kotlin synthetics进行视图绑定。
对于那些想知道
synthetic
是什么的人,我应该说一种用Kotlin访问UI视图id的简单方法,通过在Gradle
中添加'kotlin-android-extensions'
是可能的。'kotlin-parcelize'
而不是'kotlin-android-extensions'
。t40tm48m2#
现在已弃用
'Kotlin-android-extensions'
。(用于Kotlin合成方式访问UI元素)view binding
方式访问UI元素Parcelable
,请在插件中添加'kotlin-parcelize'
,以便通过向类添加@Parcelize
注解来使用简单的方法创建可打包的您可以查看有关此更新的Google guideline。
fsi0uk1n3#
由于“kotlin-android-extensions”现在已被弃用,因此最好使用视图绑定。
为此,首先在build.gradle文件中启用视图绑定,方法是在android块下编写这些代码行。
然后在活动文件中使用视图绑定功能
首先将用于绑定的全局变量声明为
这里的ActivityMainBinding是自动生成的类
然后在OnCreate()方法中编写这些代码
hiz5n14c4#
在我看来,使用这个插件仍然比介绍的方法更好,我们只需要注意ID。因为随着AndroidKotlinExtensions Gradle插件在2017年发布,Kotlin Synthetics。对于每个布局文件,Kotlin Synthetics创建一个包含您的视图的自动生成的类-就这么简单。您只需要在您的Gradle文件中导入这个插件,并且都设置为直接引用视图引用变量,它只在内部调用findViewById一次,然后缓存它,这非常方便,使用起来也非常有趣,那么为什么它被弃用了呢?让我们来分析一下。优点:没有样板代码-只需在Gradle文件中配置一次,就可以开始使用了。KotlinSynthetics会自动生成一个类供您使用。类型安全-所有视图都是从布局文件中选取的,并且类型是已知的。缺点部分空值安全-它通常是空值安全的,因为所有视图都必须存在于布局文件中才能生成。但是,如果您有多个基于配置的布局文件,其中一些视图出现在一些布局文件中,而在一些布局文件中丢失,该怎么办?在这里,您必须手动检查是否为null。污染名称空间-您可以在不同的布局中拥有相同的视图ID,并且你可能会不小心导入一个其他布局的视图,这将在运行时抛出NullPointerException。仅限Kotlin- Kotlin合成只能和Kotlin一起使用。Java不支持它们。仍然有一些项目是用Java编写的,可能还没有完全移植到Kotlin,因此Kotlin可能不是在项目中获取ViewId的一致方法。由于这些问题,KotlinSynthetics现在被弃用。
现在由你来决定你是否还想像我一样使用这个插件如果你想修复过时的警告,你必须避免使用过时的方法。😊
qacovj5a5#
上面的答案是正确的,但是当你从你的项目中删除'kotlin-android-extensions'时,使用kotlin的合成方式访问视图属性将是不可能的,所以你需要迁移以使用视图绑定,请按照Google的这个指南迁移到视图绑定:连结
eagi6jfj6#
Google提供了一种新的视图绑定方式来代替“kotlin-android-extensions”。在应用模块的build.gradle中添加以下插件。
2jcobegt7#
如前所述,KotlinSynthetics已经过时,应该被View Binding取代。在我的例子中,我想引入View Binding,并逐渐从Kotlin Synthetics迁移过来。在一个项目中可以同时拥有这两个版本,你只需要记住不要更新Kotlin版本-我在
4.1.21
的时候有一个构建错误,所以需要降级到1.4.10
。另外,请记住从类(通常是Activity/fragment)中删除KotlinSynthetics导入,该类已使用视图绑定迁移到。
vu8f3i0k8#
我得到这个错误是因为一个完全不同的原因。我忘了在清单文件中添加hiltannotation的地方添加自定义应用程序类: