Я использую 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
}
Эта ошибка не связана с вашей конфигурацией Gradle.
DaggerApplicationComponent - это класс, который Dagger генерирует для интерфейса ApplicationComponent, который вы определили. Если во время генерации кода возникает какая-либо ошибка (например, отсутствует метод @Provides), Dagger не будет генерировать DaggerApplicationComponent, и вы получите эту ошибку.
Что вам нужно сделать, так это прочитать весь вывод ошибок в AndroidStudio и попытаться понять, почему Dagger не удалось.
Я также столкнулся с очень неприятным поведением, когда некоторые операторы импорта отсутствовали в файлах проекта. В этих случаях Dagger выйдет из строя, но не скажет вам точно, в чем проблема, и вам придется искать ее самостоятельно.
Если вам нужна дополнительная помощь - приложите к вопросу вывод об ошибке сборки.
Я новичок, поэтому больше не имею представления о MVP и Dagger2. Когда я набираю DaggerApplicationComponent, он показывает эту ошибку. Это небольшой код приложения здесь - github.com/rohitku860/AndroidMvpDagger2
@RohitUpadhyay, все в порядке, кроме этого кода: Void inject(MainActivity target);. Попробуйте поменять Void на void (нижний регистр).
Для этого есть простое решение, просто перестройте проект, и он может сработать.
Почему это не принятый ответ - не знаю. Хотя спасибо (Y)
@HaiderMalik Coz для большего количества людей это не сработает.
Правильная установка вашего кинжала решает эту проблему.
Внутри вашего уровень приложения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();
}
Это подходящее решение для тех, кто использует котлин. Спасибо!!
Вы ссылаетесь на снимок экрана в своем ответе, но его нет. Также в Android Studio нет других настроек, насколько я вижу?
Ах Остальные настройки находятся в разделе настроек
Шаблон mvp не связан с кинжалом, вы можете использовать кинжал без использования mvp и наоборот. Ваша ошибка связана с вашим кодом, а не с зависимостями Android