我正在使用Dagger 2(DI库的第一次使用者)和Android Studio(AS 2.1.2 - SDK 24),显然我的第一个想法是“我需要什么依赖才能使用它?”
看了一些例子,我可以看到你需要一个顶级build.gradle
文件,你需要一个注释处理器插件:
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
现在Module
级build.gradle
中的依赖项会为Module
应用apt插件,所以我最终会得到类似的内容:
apply plugin: 'com.neenbedankt.android-apt'
// other generic settings - android / buildTypes etc.
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
.
.
compile 'com.google.dagger:dagger:2.6'
apt 'com.google.dagger:dagger-compiler:2.6'
provided 'javax.annotation:jsr250-api:1.0'
}
问题
在我的项目中,我一直在使用Jack Tool Chain和Java 8,发现上面的配置与Jack不兼容。
为了让Jack和Dagger 2合作,研究了我需要的东西,我改变了以下内容:
gradle-wrapper.properties:
更改为:
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
build.gradle (顶级)
更改为:
classpath 'com.google.guava:guava:19.0' // added after getting NoSuchMethod Error - it solved the issue
classpath 'com.android.tools.build:gradle:2.2.0-alpha7'
build.gradle (模块级别)
更改为:
compile 'com.google.dagger:dagger:2.6'
annotationProcessor 'com.google.dagger:dagger-compiler:2.6'
通过这些更改,我可以使用Jack工具链,并构建一个小项目。但是,在没有更改任何代码的情况下,我开始在创建组件时遇到问题 - 在一行简单的代码中:testComponent = DaggerTestComponent.builder().build();
单词DaggerTestComponent
变为红色(显然Dagger 2库不能正常工作)。我设法通过一个好的旧的无效缓存,清理和重建来解决错误。然而,每次我尝试构建小型测试项目时,我都会受到随机错误的困扰 - 我已经管理了几次运行应用程序(它按预期工作),但显然它很有气质。
问题
所以这个问题,我为此花了很长时间而道歉,但认为所有上述内容都是相关的,
目前还有比我正在使用的更“稳定”的设置吗?还有其他人遇到过这些问题吗?
显然我不必使用Jack工具链和Java 8,但如果我不需要,我宁可不妥协!