Dagger 2,Gradle Plugins和Jack - 需要指导

时间:2016-08-10 23:55:28

标签: android java-8 android-gradle dagger-2

我正在使用Dagger 2(DI库的第一次使用者)和Android Studio(AS 2.1.2 - SDK 24),显然我的第一个想法是“我需要什么依赖才能使用它?”

看了一些例子,我可以看到你需要一个顶级build.gradle文件,你需要一个注释处理器插件:

    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

现在Modulebuild.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,但如果我不需要,我宁可不妥协!

0 个答案:

没有答案