2016-07-03 11 views
5

Dagger 2Android Data Bindingの両方をプロジェクトに追加すると、以下のビルド時間のエラーが発生します。これは既知の問題([1]または[2]を参照)と同じようなエラーが発生したようです。残念ながら、私はそれらを解決することができませんでした(他のいくつかのような)。誰かがDagger 2とData Bindingの現在のバージョンで完全な作業設定を持っていますか?ダガー2とAndroidのデータバインディングの競合

ここでエラー:

 
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' 
} 

私もprovided代わりのaptに試してみましたapt 'com.google.dagger:dagger-compiler:2.5'で、成功なし。また、apply plugin: 'com.neenbedankt.android-apt'をコメントアウトすると(提供されたリソースに示唆されているように)役に立たなかった。

答えて

5

Dagger 2とDataBindingは同じプロジェクトで構成されており、問題なく動作しています。

ダガー2の設定でエラーが発生しました。注入しようとしているHeadingServiceは、@Providesアノテーションを提供していないため作成できません。また、クラスにはコンストラクタで@Injectアノテーションがありません。

+1

あなたは正しいです。注射に何か問題があるようです。私はそのバインディングエラーやいくつかの古いバグレポートに集中していたので、実際の原因を見落としました。私の目を開いてくれてありがとう! – Zardoz

関連する問題