数据绑定设置:
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) 这是我的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) 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.jar了exploded-arr文件夹,但是找不到DataBinderMapper课程。
任何解决方法/修复将不胜感激。
我正在尝试将一个已有 3 年历史的项目迁移到 AndroidX。该项目有3个模块。
app是主要模块。该项目在运行时构建sdk和apis模块的AAR 文件。并且该应用程序使用sdk和apis
我为迁移所做的更改是:
当应用程序启动时,它会从应用程序模块启动一个工作正常的活动。紧接着它从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)