Кинжал 2, Gradle Plugins и Jack – Требуемое руководство

Я использую Dagger 2 (первый пользователь библиотеки DI) с Android Studio (AS 2.1.2 – SDK 24), и, очевидно, моя первая мысль: «Какие зависимости мне нужны, чтобы использовать его?»

Посмотрев примеры, я вижу, что вам нужен файл build.gradle верхнего уровня, для build.gradle необходим плагин процессора аннотаций:

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

Теперь зависимости на уровне Module build.gradle применяют apt-модуль для Module поэтому я получаю что-то вроде:

 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 в моих проектах и ​​выяснил, что вышеуказанная конфигурация несовместима с Джеком.

Изучив, что мне нужно, чтобы Джек и Кинжал 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 Tool Chain и создать небольшой проект. Однако без изменения кода у меня возникли проблемы с созданием компонента – в простой строке кода: testComponent = DaggerTestComponent.builder().build(); Слово DaggerTestComponent стало красным (очевидно, библиотека Dagger 2 не работала так, как должна). Мне удалось решить эту ошибку старыми недействительными кэшами, очистить и перестроить. Однако каждый раз, когда я пытаюсь построить небольшой тестовый проект, я страдал от случайных ошибок – мне удалось пару раз запустить приложение (и оно работает так, как ожидалось), но, очевидно, оно довольно темпераментное.

ВОПРОС

Итак, вопрос, и я прошу прощения за то, что он так долго, но думал, что все вышеизложенное имеет значение,

Есть ли более «стабильная» настройка, чем то, что я использую на данный момент? Кто-нибудь еще столкнулся с этими проблемами?

Очевидно, мне не нужно использовать цепочку инструментов Jack и Java 8, но я бы предпочел не компрометировать, если мне это не нужно!

Solutions Collecting From Web of "Кинжал 2, Gradle Plugins и Jack – Требуемое руководство"