Dagger 2와 Kotlin을 사용합니다. Dagger를 구현하는 동안 실수 할 때 (예 : 클래스 constractor에 @Inject
을 놓친 경우) 특히 실수가 어디에 있는지 보여줍니다. INSEAD 컴파일러 오류가 항상 동일합니다 :'kotlin-kapt'플러그인을 사용하면 Android Studio가 Dagger 2에 대한 특정 오류를 제공하지 않습니다.
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
}
Execution failed for task ':app:kaptDebugKotlin'. Internal compiler error. See log for more details
클래스 고의적 실수와 (@Inject 주석)
모듈 빌드. 단계 :
012 3,516,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()
}
당신은 Gradle을 로그에 오류를 찾을 수 있습니다. Android Studio의 오른쪽 하단에서 'Gradle Console'을 클릭하십시오. 거기에 오류가 표시됩니다. –
@ DavidMedenjak의 대답은 분명히 현재로서는 최고입니다. AndroidStudio는 아직'kapt' 오류를 처리하지 않는 것으로 보입니다. 손가락을 교차 시키세요. –