【发布时间】:2016-11-05 06:36:57
【问题描述】:
在我的项目中同时添加Dagger 2 和Android Data Binding 时,出现以下构建时间错误。这似乎是一个已知问题(参见[1] 或[2]),因为我得到了完全相同的错误。不幸的是,我无法解决它们(像其他一些人一样)。是否有人对当前版本的 Dagger 2 和 Data Binding 进行了完整的工作设置,并且可以提供帮助?
这里的错误:
C:\Users\Kai\AndroidStudioProjects\WearCompass\mobile\src\main\java\com\comparilla\wearcompass\ui\navigation\InfoPanelFragment.java:12:错误:com.comparilla.wearcompass.databinding 包不存在 导入 com.comparilla.wearcompass.databinding.FragmentInfoPanelBinding; ^ C:\Users\Kai\AndroidStudioProjects\WearCompass\mobile\src\main\java\com\comparilla\wearcompass\ui\navigation\InfoPanelViewModel.java:8: 错误:找不到符号 进口com.comparilla.wearcompass.BR; ^ 符号:BR 级 位置:包 com.comparilla.wearcompass C:\Users\Kai\AndroidStudioProjects\WearCompass\mobile\src\main\java\com\comparilla\wearcompass\MobileApplication.java:7: 错误:找不到符号 导入 com.comparilla.wearcompass.di.components.DaggerMobileApplicationComponent; ^ 符号:类 DaggerMobileApplicationComponent 位置:包 com.comparilla.wearcompass.di.components C:\Users\Kai\AndroidStudioProjects\WearCompass\mobile\src\main\java\com\comparilla\wearcompass\di\components\MobileActivityComponent.java:15:错误:com.comparilla.wearcompass.common.services.HeadingService 不能在没有 @Inject 构造函数或 @Provides 注释的方法的情况下提供。 无效注入(InfoPanelFragment 片段); ^ com.comparilla.wearcompass.common.services.HeadingService 在注入 com.comparilla.wearcompass.di.modules.ActivityModule.provideInfoPanelViewModel(headingService, ...) com.comparilla.wearcompass.ui.navigation.InfoPanelViewModel 注入于 com.comparilla.wearcompass.ui.navigation.InfoPanelFragment.mViewModel com.comparilla.wearcompass.ui.navigation.InfoPanelFragment 被注入 com.comparilla.wearcompass.di.components.MobileActivityComponent.inject(片段) 4 个错误 失败的 FAILURE:构建失败并出现异常。 * 什么地方出了错: 任务 ':mobile:compileDebugJavaWithJavac' 执行失败。 > 编译失败;有关详细信息,请参阅编译器错误输出。 * 尝试: 使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。 构建失败我的项目 build.gradle:
// 顶级构建文件,您可以在其中添加所有子项目/模块通用的配置选项。 构建脚本 { 存储库{ 中心() } 依赖{ 类路径'com.android.tools.build:gradle:2.1.2' 类路径'com.neenbedankt.gradle.plugins:android-apt:1.8' // 注意:不要将您的应用程序依赖项放在这里;他们属于 // 在单个模块 build.gradle 文件中 } } 所有项目{ 存储库{ 中心() } } 任务清理(类型:删除){ 删除 rootProject.buildDir }以及应用程序 build.gradle:
应用插件:'com.android.application' 应用插件:'com.neenbedankt.android-apt' 安卓 { compileSdkVersion 24 构建工具版本“23.0.3” 数据绑定 { 启用 = 真 } 默认配置 { applicationId "com.comparilla.wearcompass" minSdkVersion 21 targetSdkVersion 24 版本代码 1 版本名称“1.0” } 构建类型 { 发布 { 缩小启用假 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } 依赖{ 编译文件树(包括:['*.jar'],目录:'libs') wearApp 项目(':wear') 测试编译'junit:junit:4.12' // 在公共库中启用 BuildConfig.DEBUG // 见 https://stackoverflow.com/a/29163361/166229 发布编译项目(路径:':common',配置:'发布') debugCompile 项目(路径:':common',配置:'debug') 编译'com.android.support:appcompat-v7:24.0.0' 编译'com.google.android.gms:play-services-maps:9.0.2' 编译'com.android.support:design:24.0.0' 编译'com.android.support:preference-v14:24.0.0' 编译'com.google.dagger:dagger:2.5' apt 'com.google.dagger:dagger-compiler:2.5' 提供'javax.annotation:jsr250-api:1.0' }我还尝试在apt 'com.google.dagger:dagger-compiler:2.5' 中使用provided 而不是apt,但没有成功。还注释掉 apply plugin: 'com.neenbedankt.android-apt' 也没有帮助(就像提供的资源中所建议的那样)。
【问题讨论】:
标签: android gradle dagger-2 android-databinding