С плагином «kotlin-kapt», Android Studio не дает конкретных ошибок в отношении Dagger 2

Я использую Kotlin с кинжалом 2. Проблема в том, что, когда я @Inject при внедрении кинжала (например, miss @Inject для класса constractor), IDE не показывает конкретно, где ошибка. Ошибка компилятора Insead всегда одинакова:

Execution failed for task ':app:kaptDebugKotlin'. Internal compiler error. See log for more details

Класс с преднамеренной ошибкой (прокомментировал @Inject):

 class LoginPresenter //@Inject constructor(private val request: LoginRequest) 

Файл проекта build.gradle:

 buildscript { ext.kotlin_version = '1.1.4-3' repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } allprojects { repositories { jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } 

Модуль build.gradle:

 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' android { compileSdkVersion 26 buildToolsVersion "26.0.1" defaultConfig { applicationId "com.example.kravets_a.kotlinanddagger" minSdkVersion 16 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { ... compile 'com.google.dagger:dagger:2.10' annotationProcessor 'com.google.dagger:dagger-compiler:2.10' kapt "com.google.dagger:dagger-compiler:2.10" compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" } repositories { mavenCentral() } 

Опция 1

Используйте apply plugin: 'kotlin-kapt' . И когда возникает ошибка, вы можете увидеть ее в Android Studio => внизу справа => в Gradle Console.

Спасибо Давиду Меденяку за комментарий.

Вариант 2

apply plugin: 'kotlin-kapt' с kapt { generateStubs = true }

Ошибка компиляции с ожидаемым результатом:

[com.example.kravets_a.kotlinanddagger.logic.MainActivityComponent.inject (com.example.kotlinanddagger.MainActivity)] com.example.kotlinanddagger.logic.LoginPresenter не может быть предоставлен без конструктора @Inject или из @ Provides- или @Produces -носнованный метод.

Учебники вроде этого , то или это говорит, что apply plugin: 'kotlin-kapt' можно использовать вместо kapt { generateStubs = true } . Но в этом случае Android Studio не дает конкретной ошибки компиляции.

Решение состоит в том, чтобы добавить это в build.gradle вашего модуля:

 kapt { correctErrorTypes = true }