使用最新的DataBinding时
classpath 'com.android.tools.build:gradle:3.4.0-alpha10'
NoSuchMethodError
在“活动”加载时使应用程序崩溃。使用:
classpath 'com.android.tools.build:gradle:3.2.1'
使数据绑定成功进行。
这是崩溃:
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'
如果要使用最新的构建工具,有什么办法解决此问题?
答案 0 :(得分:9)
您的一个库依赖于数据绑定,并随使用构建工具3.3(或更早版本)构建的生成的数据绑定类一起分发。此问题是由于数据绑定库的最新beta / rc版本中引入的重大更改引起的。在版本3.4中,androidx.databinding.ViewDataBinding
构造函数的签名已更改为:
protected ViewDataBinding(DataBindingComponent bindingComponent, View root, int localFieldCount)
收件人:
protected ViewDataBinding(Object bindingComponent, View root, int localFieldCount)
这使得生成的任何数据绑定类二进制文件都与3.4数据绑定库不兼容,从而在启动时导致以下异常:
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)
作为解决方法,您可以使用最新的生成工具来重建包含数据绑定类的库。
Androig错误跟踪器上的相应错误是:https://issuetracker.google.com/issues/122936785
更新
该问题已修复,此修复程序已在3.5 beta 1中提供(即将在即将发布的3.4.1中提供)