Не удается разрешить символ DaggerApplicationComponent

Я использую Dagger2 с java, и я получил сообщение «Не могу разрешить ошибку символа DaggerApplicationComponent в моем приложении». Кажется, что-то не так с зависимостями. Любая помощь могла бы быть полезна. Мой полный код здесь- https://github.com/rohitku860/AndroidMvpDagger2

Вот мой выпускник приложения с зависимостями:

 apply plugin: 'com.android.application'
    android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "com.example.android.androidmvpdagger2"
        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 {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso- 
    core:3.0.1'
    implementation 'com.google.dagger:dagger:2.13'
    annotationProcessor 'com.google.dagger:dagger-compiler:2.13'
    implementation 'com.jakewharton:butterknife:8.5.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'

}

и вот проект первый:

        buildscript {

        repositories {
            google()
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.1.0'
        }
    }

        allprojects {
        repositories {
            google()
            jcenter()
        }
    }



           task clean(type: Delete) {
            delete rootProject.buildDir
        }

Шаблон mvp не связан с кинжалом, вы можете использовать кинжал без использования mvp и наоборот. Ваша ошибка связана с вашим кодом, а не с зависимостями Android

Anton Makov 01.04.2018 22:09
10
1
6 231
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Эта ошибка не связана с вашей конфигурацией Gradle.

DaggerApplicationComponent - это класс, который Dagger генерирует для интерфейса ApplicationComponent, который вы определили. Если во время генерации кода возникает какая-либо ошибка (например, отсутствует метод @Provides), Dagger не будет генерировать DaggerApplicationComponent, и вы получите эту ошибку.

Что вам нужно сделать, так это прочитать весь вывод ошибок в AndroidStudio и попытаться понять, почему Dagger не удалось.

Я также столкнулся с очень неприятным поведением, когда некоторые операторы импорта отсутствовали в файлах проекта. В этих случаях Dagger выйдет из строя, но не скажет вам точно, в чем проблема, и вам придется искать ее самостоятельно.

Если вам нужна дополнительная помощь - приложите к вопросу вывод об ошибке сборки.

Я новичок, поэтому больше не имею представления о MVP и Dagger2. Когда я набираю DaggerApplicationComponent, он показывает эту ошибку. Это небольшой код приложения здесь - github.com/rohitku860/AndroidMvpDagger2

Rohit Upadhyay 02.04.2018 15:29

@RohitUpadhyay, все в порядке, кроме этого кода: Void inject(MainActivity target);. Попробуйте поменять Void на void (нижний регистр).

Vasiliy 02.04.2018 16:40

Для этого есть простое решение, просто перестройте проект, и он может сработать.

Почему это не принятый ответ - не знаю. Хотя спасибо (Y)

Haider Malik 25.08.2020 01:46

@HaiderMalik Coz для большего количества людей это не сработает.

Agilanbu 11.02.2021 13:10

Правильная установка вашего кинжала решает эту проблему.

Обновление (29 марта 2020 г.)

Внутри вашего уровень приложенияbuild.gradle внутри блока dependencies добавьте эти строки:

     //dagger2
     api 'com.google.dagger:dagger:2.24'
     api 'com.google.dagger:dagger-android:2.24'
     api 'com.google.dagger:dagger-android-support:2.24'

     annotationProcessor 'com.google.dagger:dagger-compiler:2.24'
     kapt 'com.google.dagger:dagger-compiler:2.24'

     annotationProcessor 'com.google.dagger:dagger-android-processor:2.24'
     kapt 'com.google.dagger:dagger-android-processor:2.24'

     compileOnly 'javax.annotation:jsr250-api:1.0'
     implementation 'javax.inject:javax.inject:1'

Внутри блока androidуровень приложенияbuild.gradle,

kapt {
        generateStubs = true
    }

В вершинауровень приложенияbuild.gradle, сделайте это в точно под заказ.

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android-extensions'

Наконец, вам необходимо настроить процесс аннотации, как показано на снимке экрана ниже. Вы можете сделать это File>Other Settings>Settings for New Projects>search"Annotation processor"

После этого сделать из Меню Build > Rebuild. Вы сделали!

Контрольная работа:

@Component
public interface ApplicationComponent {

}

Теперь вы можете использовать DaggerApplicationComponent, созданный во время компиляции, для вашего интерфейса ApplicationComponent.

public class MyApplication extends Application {

    ApplicationComponent applicationComponent = DaggerApplicationComponent.create();


}

Это подходящее решение для тех, кто использует котлин. Спасибо!!

Venkat Vinay 02.09.2020 20:23

Вы ссылаетесь на снимок экрана в своем ответе, но его нет. Также в Android Studio нет других настроек, насколько я вижу?

Chris Nevill 02.10.2020 22:15

Ах Остальные настройки находятся в разделе настроек

Chris Nevill 02.10.2020 22:18

Другие вопросы по теме