2016-07-03 28 views
5

Projemize hem Dagger 2 hem de Android Data Binding eklerken, aşağıdaki bazı kurulum zamanı hatalarını alıyorum. Tam olarak aynı hataları aldığım bilinen bir sorun (bkz. [1] veya [2]) gibi görünüyor. Ne yazık ki onları çözemedim (diğerleri gibi). Birisi Hançer 2 ve Veri Bağlama'nın mevcut sürümleriyle tam bir çalışma düzenine sahip ve yardımcı olabilir mi? İşteHançer 2 ve Android Veriler Bağlama çakışması

hataları:

 
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 

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

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

Ben de provided yerine apt arasında çalıştı apt 'com.google.dagger:dagger-compiler:2.5', başarı olmadan. Ayrıca apply plugin: 'com.neenbedankt.android-apt' yorumunda bulunulmadı (sağlanan kaynaklarda önerildiği gibi).

cevap

5

Aynı projede yapılandırılan Dagger 2 ve DataBinding var ve sorunsuz çalışıyor.

Hançer 2 yapılandırmasında hata var. HeadingService enjekte etmeye çalıştığınız, @Provides ek notu ile sağlamadığınız için oluşturulamıyor ve aynı zamanda sınıf, yapıcıda @Inject ek açıklamasına sahip değil.

+1

Haklısınız. Enjeksiyonlarımda yanlış bir şey var gibi görünüyor. Bu bağlayıcı hataya ve bazı eski hata raporlarına odaklandım, gerçek sebebi gözden kaçırdım. Gözlerimi açtığın için teşekkürler! – Zardoz

İlgili konular