[英]Dagger 2 and Android Data Binding conflict
將Dagger 2和Android數據綁定添加到我的項目時,我得到一些下面的構建時錯誤。 這似乎是一個已知的問題(見[1]或[2] ),因為我得到完全相同的錯誤。 不幸的是我無法解決它們(就像其他人一樣)。 有人使用當前版本的Dagger 2和Data Binding進行完整的工作設置,並且可以提供幫助嗎?
這里的錯誤:
C:\Users\Kai\AndroidStudioProjects\WearCompass\mobile\src\main\java\com\comparilla\wearcompass\ui\navigation\InfoPanelFragment.java:12: error: package com.comparilla.wearcompass.databinding does not exist import com.comparilla.wearcompass.databinding.FragmentInfoPanelBinding; ^ C:\Users\Kai\AndroidStudioProjects\WearCompass\mobile\src\main\java\com\comparilla\wearcompass\ui\navigation\InfoPanelViewModel.java:8: error: cannot find symbol import com.comparilla.wearcompass.BR; ^ symbol: class BR location: package com.comparilla.wearcompass C:\Users\Kai\AndroidStudioProjects\WearCompass\mobile\src\main\java\com\comparilla\wearcompass\MobileApplication.java:7: error: cannot find symbol import com.comparilla.wearcompass.di.components.DaggerMobileApplicationComponent; ^ symbol: class DaggerMobileApplicationComponent location: package com.comparilla.wearcompass.di.components C:\Users\Kai\AndroidStudioProjects\WearCompass\mobile\src\main\java\com\comparilla\wearcompass\di\components\MobileActivityComponent.java:15: error: com.comparilla.wearcompass.common.services.HeadingService cannot be provided without an @Inject constructor or from an @Provides-annotated method. void inject(InfoPanelFragment fragment); ^ com.comparilla.wearcompass.common.services.HeadingService is injected at com.comparilla.wearcompass.di.modules.ActivityModule.provideInfoPanelViewModel(headingService, …) com.comparilla.wearcompass.ui.navigation.InfoPanelViewModel is injected at com.comparilla.wearcompass.ui.navigation.InfoPanelFragment.mViewModel com.comparilla.wearcompass.ui.navigation.InfoPanelFragment is injected at com.comparilla.wearcompass.di.components.MobileActivityComponent.inject(fragment) 4 errors FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':mobile:compileDebugJavaWithJavac'. > Compilation failed; see the compiler error output for details. * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. BUILD FAILED
我的項目build.gradle:
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.1.2' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }
應用程序build.gradle:
apply plugin: 'com.android.application' apply plugin: 'com.neenbedankt.android-apt' android { compileSdkVersion 24 buildToolsVersion "23.0.3" dataBinding { enabled = true } defaultConfig { applicationId "com.comparilla.wearcompass" minSdkVersion 21 targetSdkVersion 24 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') wearApp project(':wear') testCompile 'junit:junit:4.12' // to enable BuildConfig.DEBUG in the common library // see https://stackoverflow.com/a/29163361/166229 releaseCompile project(path: ':common', configuration: 'release') debugCompile project(path: ':common', configuration: 'debug') compile 'com.android.support:appcompat-v7:24.0.0' compile 'com.google.android.gms:play-services-maps:9.0.2' compile 'com.android.support:design:24.0.0' compile 'com.android.support:preference-v14:24.0.0' compile 'com.google.dagger:dagger:2.5' apt 'com.google.dagger:dagger-compiler:2.5' provided 'javax.annotation:jsr250-api:1.0' }
我也嘗試在apt 'com.google.dagger:dagger-compiler:2.5'
provided
而不是apt
,但沒有成功。 同時注釋掉apply plugin: 'com.neenbedankt.android-apt'
沒有幫助(就像提供的資源中所建議的那樣)。
我確實在同一個項目中配置了Dagger 2和DataBinding,它沒有任何問題。
您在Dagger 2配置中確實有錯誤。 您嘗試注入的HeadingService
無法創建,因為您沒有為它提供@Provides
注釋,並且該類在構造函數上沒有@Inject
注釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.