相关疑难解决方法(0)

java.lang.NoClassDefFoundError:运行Espresso测试时的android.databinding.DataBinderMapperImpl

数据绑定设置:

apply plugin: 'kotlin-kapt'

android {
    dataBinding {
        enabled = true
    }
}

dependencies {
    kapt "com.android.databinding:compiler:3.1.0"
}
Run Code Online (Sandbox Code Playgroud)

使用数据绑定的fragment类:

class LandingFragment : Fragment(), Injectable {

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                          savedInstanceState: Bundle?): View? {
        val dataBinding = LandingFragmentBinding.inflate(inflater, container, false)
        return dataBinding.root
    }
}
Run Code Online (Sandbox Code Playgroud)

每次为此片段运行Espresso测试时,我都会遇到以下异常:

java.lang.NoClassDefFoundError: android.databinding.DataBinderMapperImpl
at android.databinding.DataBindingUtil.<clinit>(DataBindingUtil.java:32)
at com.sc.databinding.LandingFragmentBinding.inflate(LandingFragmentBinding.java:42)
at com.sc.ui.landing.LandingFragment.onCreateView(LandingFragment.kt:32)
...
Run Code Online (Sandbox Code Playgroud)

data-binding android kotlin android-espresso

9
推荐指数
2
解决办法
2007
查看次数

失败的解析:Landroid/databinding/DataBindingUtil : java.lang.NoClassDefFoundError:

这是我的gradle文件

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.3'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}
Run Code Online (Sandbox Code Playgroud)

模块/build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "<package_id>"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        multiDexEnabled true            
    }
    dataBinding {
            enabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
def gsonVersion = "2.6.2"
def gsonConverterVersion = "2.1.0"
def interceptorVersion = "3.3.0"
def supportVersion = "25.3.1"
dependencies { …
Run Code Online (Sandbox Code Playgroud)

data-binding android android-databinding

5
推荐指数
1
解决办法
3128
查看次数

Android数据绑定:缺少DataBinderMapper类

java.lang.NoClassDefFoundError: android.databinding.DataBinderMapper
        at android.databinding.DataBindingUtil.<clinit>(DataBindingUtil.java:31)
        at com.example.MainActivity.onCreate(MainActivity.java:13)
        at android.app.Activity.performCreate(Activity.java:5231)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
        at android.app.ActivityThread.access$800(ActivityThread.java:135)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5001)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
        at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

我希望这是一个错误,有人遇到类似的问题吗?我解压缩classes.jarexploded-arr文件夹,但是找不到DataBinderMapper课程。

任何解决方法/修复将不胜感激。

data-binding android

4
推荐指数
2
解决办法
5945
查看次数

AndroidX 迁移后应用程序崩溃(数据绑定错误)

我正在尝试将一个已有 3 年历史的项目迁移到 AndroidX。该项目有3个模块。

  • 应用程序
  • 软件开发工具包
  • 蜜蜂

app是主要模块。该项目在运行时构建sdkapis模块的AAR 文件。并且该应用程序使用sdkapis

我为迁移所做的更改是:

  1. 更新了 app.gradle 和 gradlewrapper 属性的目标版本
  2. 迁移到 AndroidX
  3. 更新了所有模块的所有依赖项。

当应用程序启动时,它会从应用程序模块启动一个工作正常的活动。紧接着它从sdk模块启动一个活动。但是这里应用程序在 DataBindingUtil.setContentView 处崩溃。所有 3 个模块都启用了数据绑定。下面是堆栈跟踪。

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/android/databinding/library/baseAdapters/DataBinderMapperImpl;
    at com.xyz.sdk.DataBinderMapperImpl.collectDependencies(DataBinderMapperImpl.java:274)
    at androidx.databinding.MergedDataBinderMapper.addMapper(MergedDataBinderMapper.java:58)
    at androidx.databinding.MergedDataBinderMapper.addMapper(MergedDataBinderMapper.java:60)
    at androidx.databinding.DataBinderMapperImpl.<init>(DataBinderMapperImpl.java:5)
    at androidx.databinding.DataBindingUtil.<clinit>(DataBindingUtil.java:32)
    at androidx.databinding.DataBindingUtil.setContentView(DataBindingUtil.java:284)
    at com.xyz.sdk.landing.LandingPageActivity.onCreate(LandingPageActivity.java:51)
    at android.app.Activity.performCreate(Activity.java:7136)
    at android.app.Activity.performCreate(Activity.java:7127)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6669) …
Run Code Online (Sandbox Code Playgroud)

android gradle android-databinding androidx

4
推荐指数
1
解决办法
1784
查看次数