gpt4 book ai didi

android - 使用 buildtools 3.4.0 进行数据绑定(bind) NoSuchMethodError

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:38:56 24 4
gpt4 key购买 nike

使用最新的DataBinding时

classpath 'com.android.tools.build:gradle:3.4.0-alpha10'

NoSuchMethodError 会在 Activity 加载时使应用程序崩溃。使用:

classpath 'com.android.tools.build:gradle:3.2.1'

使数据绑定(bind)成功。

这是崩溃:

java.lang.NoSuchMethodError: No direct method <init>
(Landroidx/databinding/DataBindingComponent;Landroid/view/View;I)V in
class Landroidx/databinding/ViewDataBinding; or its super classes
(declaration of 'androidx.databinding.ViewDataBinding'

如果我们想使用最新的构建工具,有什么办法可以解决这个问题吗?

最佳答案

您的一个库依赖于数据绑定(bind),并随生成的数据绑定(bind)类一起分发,这些数据绑定(bind)类是使用构建工具 3.3(或更早版本)构建的。该问题是由数据绑定(bind)库的最新 beta/rc 版本中引入的重大更改引起的。在 3.4 版中,androidx.databinding.ViewDataBinding 构造函数的签名已更改为:

protected ViewDataBinding(DataBindingComponent bindingComponent, View root, int localFieldCount)

到:

protected ViewDataBinding(Object bindingComponent, View root, int localFieldCount)

这使得任何生成的数据绑定(bind)类二进制文件与 3.4 数据绑定(bind)库不兼容,导致启动时出现以下异常:

java.lang.NoSuchMethodError: No direct method <init>(Landroidx/databinding/DataBindingComponent;Landroid/view/View;I)V in class Landroidx/databinding/ViewDataBinding; or its super classes (declaration of 'androidx.databinding.ViewDataBinding' appears in /data/app/com.example.idolon-LqF2y8dUMxZoK3PVRlzbzg==/base.apk)
at com.example.lib.databinding.ActivityLibBinding.<init>(ActivityLibBinding.java:20)
at com.example.lib.databinding.ActivityLibBindingImpl.<init>(ActivityLibBindingImpl.java:30)
at com.example.lib.databinding.ActivityLibBindingImpl.<init>(ActivityLibBindingImpl.java:27)
at com.example.lib.DataBinderMapperImpl.getDataBinder(DataBinderMapperImpl.java:316)
at androidx.databinding.MergedDataBinderMapper.getDataBinder(MergedDataBinderMapper.java:74)
at androidx.databinding.DataBindingUtil.bind(DataBindingUtil.java:199)
at androidx.databinding.DataBindingUtil.bindToAddedViews(DataBindingUtil.java:327)
at androidx.databinding.DataBindingUtil.setContentView(DataBindingUtil.java:306)
at androidx.databinding.DataBindingUtil.setContentView(DataBindingUtil.java:284)

作为解决方法,您可以使用最新的构建工具重建包含数据绑定(bind)类的库。

Androig Bug tracker 上相应的错误是:https://issuetracker.google.com/issues/122936785

更新
该问题已修复,修复程序可在 3.5 beta 1 中使用(它也将在即将推出的 3.4.1 中可用)

关于android - 使用 buildtools 3.4.0 进行数据绑定(bind) NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54221707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com