Khi thêm cả hai Dagger 2 và Android Data Binding vào dự án của tôi, tôi nhận được một số lỗi thời gian xây dựng bên dưới. Có vẻ như đây là một vấn đề đã biết (xem [1] hoặc [2]) khi tôi nhận được cùng một lỗi chính xác. Thật không may tôi đã không thể giải quyết chúng (giống như một số người khác). Có ai đó có một thiết lập làm việc đầy đủ với các phiên bản hiện tại của Dagger 2 và Data Binding, và có thể giúp đỡ?Dagger 2 và xung đột dữ liệu ràng buộc Android
Đây là lỗi:
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 dự án của tôi:
// 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 }
Và build.gradle ứng dụng:
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' }
Tôi cũng đã cố gắng để provided
thay vì apt
trong apt 'com.google.dagger:dagger-compiler:2.5'
, không thành công. Ngoài ra nhận xét ra apply plugin: 'com.neenbedankt.android-apt'
không giúp (như đề xuất trong các tài nguyên được cung cấp).
Bạn nói đúng. Có vẻ như có gì đó sai với thuốc tiêm của tôi. Tôi đã quá tập trung vào lỗi liên kết đó và một số báo cáo lỗi cũ hơn, rằng tôi đã bỏ qua nguyên nhân thực sự. Cảm ơn vì đã mở mắt ra! – Zardoz