2017-09-11 2 views
0

Ich benutze Kotlin mit Dolch 2. Das Problem ist, wenn ich Fehler bei der Implementierung Dolch machen (zB Miss @Inject für Klasse Contractor), IDE nicht Zeigen Sie genau, wo der Fehler liegt. Insead Compiler-Fehler ist immer das gleiche:Mit "Kotlin-Kapt" -Plugin, bietet Android Studio keine spezifischen Fehler über Dolch 2

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

Klasse mit einem absichtlichen Fehler (kommentiert @Inject):

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

Projekt build.gradle Datei:

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 
} 

Modul 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

Sie den Fehler im gradle Protokoll finden. Klicken Sie in Android Studio unten rechts auf "Gradle-Konsole". Dort wird es die Fehler zeigen. –

+0

@ DavidMedenjak's Antwort ist anscheinend die beste, die es für jetzt gibt. Anscheinend behandelt AndroidStudio noch keine 'Kapt'-Fehler. Drück die Daumen. –

Antwort

3

Option 1

Verwendung apply plugin: 'kotlin-kapt'. Und wenn ein Fehler auftritt, können Sie ihn in Android Studio sehen => rechts unten => bei Gradle Console.

Dank an David Medenjak Kommentar.

Option 2

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

Compilation nicht mit dem erwarteten Ergebnis:

[com.example.kravets_a.kotlinanddagger.logic.MainActivityComponent.inject (com. example.kotlinanddagger.MainActivity)] com.example.kotlinanddagger.logic.LoginPresenter kann nicht ohne einen @Inject-Konstruktor oder von einem @ Provide- oder bereitgestellt werden @ Produziert eine mit Annotationen versehene Methode.

Tutorials wie this, this oder that sagt, dass apply plugin: 'kotlin-kapt' anstelle von kapt { generateStubs = true } verwendet werden. In diesem Fall bietet Android Studio keinen spezifischen Kompilierungsfehler.

0

Die Lösung ist dieses build.gradle zu deinem Modul hinzuzufügen:

kapt { 
    correctErrorTypes = true 
} 
+0

Ich habe dies vor kurzem versucht, nach der offiziellen Empfehlung auf Kapt, aber es ist immer noch scheitern. d.h. 'NonExistentClass' wird noch hinzugefügt – takecare

Verwandte Themen