Подтвердить что ты не робот

Android Kotlin: Ошибка Неразрешенная ссылка: DaggerAppComponent

Я установил плагин Kotlin сегодня в существующий проект с Dagger 2. До того, как Kotlin был установлен, у меня не было проблем с кинжалом. Однако теперь компилятор жалуется:

Error:(5, 32) Unresolved reference: DaggerAppComponent
Error:Execution failed for task ':app:compileDebugKotlinAfterJava'.
> Compilation error. See log for more details
Error:(12, 21) Unresolved reference: DaggerAppComponent

Проект gradle:

ext.kotlin_version = '1.1.1'

    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"

Модуль gradle:

kapt {
    generateStubs = true
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.0.1'
    testCompile 'junit:junit:4.12'

    compile 'com.google.dagger:dagger:2.7'
    kapt 'com.google.dagger:dagger-compiler:2.7'

    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"


}

Файл DaggerAppComponent автоматически генерируется, поэтому я запутался в том, почему существует ошибка с устраненной ссылкой.

4b9b3361

Ответ 1

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'   

И в ваших зависимостях:

implementation "com.google.dagger:dagger:2.x"
implementation "com.google.dagger:dagger-android:2.x"
implementation "com.google.dagger:dagger-android-support:2.x"
kapt "com.google.dagger:dagger-compiler:2.x"
kapt "com.google.dagger:dagger-android-processor:2.x"

Ответ 2

Я получал то же сообщение об ошибке, но мой случай отличался от вашего. Неразрешенная ссылка появилась только при создании подписанного APK. Вот как я это решил:

Приложение /build.gradle

kapt {
    generateStubs = true
}

dependencies {
    //...
    implementation 'com.google.dagger:dagger:2.9'
    kapt 'com.google.dagger:dagger-compiler:2.9'
}

Теперь я могу развернуть мой подписанный APK без ошибок

Ответ 4

Сначала выдает ошибку после перестройки:

Неразрешенная ссылка: DaggerAppComponent

Вы должны попытаться импортировать (Alt + Enter) этот компонент.

Ответ 5

Не используйте закрытый для инъекций кинжал в Kotlin, используйте это так для Kotlin

@Inject
     internal lateinit