のビューにAndroidのデータバインディングライブラリを使用しています 図書館プロジェクト
ルートgradleファイルに次の行を追加しました
classpath 'com.Android.databinding:dataBinder:1.0-rc1'
モジュールのgradleファイルで以下のようにdataBindingを有効にしました
apply plugin: 'com.Android.databinding'
...
...
Android {
....
dataBinding {
enabled = true
}
}
ライブラリプロジェクトと、このライブラリを使用しているホストアプリでmultiDexを有効にしましたが、ライブラリのアクティビティを起動しているときにエラーのこのスタックトレースを取得します
Java.lang.NoClassDefFoundError: Failed resolution of: Landroid/databinding/DataBinderMapper;
at Android.databinding.DataBindingUtil.<clinit>(DataBindingUtil.Java:31)
at sdk.ui.activities.MyActivity.onCreate(MyActivity.Java:76)
at Android.app.Activity.performCreate(Activity.Java:6280)
at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1116)
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2534)
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2647)
at Android.app.ActivityThread.-wrap11(ActivityThread.Java)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1502)
at Android.os.Handler.dispatchMessage(Handler.Java:111)
at Android.os.Looper.loop(Looper.Java:207)
at Android.app.ActivityThread.main(ActivityThread.Java:5763)
at Java.lang.reflect.Method.invoke(Native Method)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:888)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:749)
Caused by: Java.lang.ClassNotFoundException: Didn't find class "Android.databinding.DataBinderMapper" on path: DexPathList[[Zip file "/data/app/testApp.dev-1/base.apk"],nativeLibraryDirectories=[/data/app/testApp.dev-1/lib/arm64, /data/app/testApp.dev-1/base.apk!/lib/arm64-v8a, /vendor/lib64, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.Java:56)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:511)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:469)
at Android.databinding.DataBindingUtil.<clinit>(DataBindingUtil.Java:31)
at sdk.ui.activities.MyActivity.onCreate(MyActivity.Java:76)
at Android.app.Activity.performCreate(Activity.Java:6280)
at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1116)
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2534)
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2647)
at Android.app.ActivityThread.-wrap11(ActivityThread.Java)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1502)
at Android.os.Handler.dispatchMessage(Handler.Java:111)
at Android.os.Looper.loop(Looper.Java:207)
at Android.app.ActivityThread.main(ActivityThread.Java:5763)
at Java.lang.reflect.Method.invoke(Native Method)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:888)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:749)
Suppressed: Java.lang.ClassNotFoundException: Android.databinding.DataBinderMapper
at Java.lang.Class.classForName(Native Method)
at Java.lang.BootClassLoader.findClass(ClassLoader.Java:781)
at Java.lang.BootClassLoader.loadClass(ClassLoader.Java:841)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:504)
... 15 more
Caused by: Java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
最終的に私はこの問題を解決することができました。アプリのaptバージョンとライブラリモジュールの間に矛盾があったようです。
アプリのaptバージョンを
classpath 'com.neenbedankt.gradle.plugins:Android-apt:1.8'
DataBindingを使用するすべてのモジュールで有効になっていることを確認してください。これが私がその例外を得た理由でした。
Android {
....
dataBinding {
enabled = true
}
}
以下をbuild.gradle
に追加するほか:
Android {
dataBinding {
enabled = true
}
}
また、次の依存関係も追加する必要があります。
dependencies {
kapt 'com.Android.databinding:compiler:3.0.1'
}
最良の推測。取り除く Android-apt
apt
を使用するライブラリがある場合
の代わりに apt 'lt.mdm.sdd:myLib:1.5.1'
使用する annotationProcessor 'lt.mdm.sdd:myLib:1.5.1'
。
これがあなたを助けるかどうかはわかりませんが、ライブラリ自体を変更すべきかどうかはわかりません。
それは私を助けました(私はandroidannotations.org
少なくとも古いバージョン。
更新
そして、なぜあなたはapply plugin: 'com.Android.databinding'
?それなしでも動作します。
クラスパス 'com.Android.databinding:dataBinder:1.0-rc1'
プラグインの適用: 'com.Android.databinding'
そのライブラリを削除します。グラドルから。
私は同じ問題を抱えていましたが、それを削除して解決しました
クラスパス「com.neenbedankt.gradle.plugins:Android-apt:1.8」
グローバルbuild.gradleから削除
プラグインの適用:「Android-apt」
ローカルbuild.gradleから、それは魅力のように働いた。
Butterknifeとの混合問題でもあったようです。かなり奇妙です。