10
votes

Dague 2 "Dague" Prefix Composant non capable de compiler? Classe générée automatiquement

im essayant d'utiliser Dagge 2 sur Android. Auparavant, je l'avais déjà travaillé et j'avais eu une injection de dépendances d'Appmodule dans des classes spécifiques de l'application. Mon problème est que iam obtient l'erreur xxx pré>

qui tente d'importer. Ceci est une classe autogéné portée p>

ci-dessous sont mes dépendances spécifiques à dague dans mon fichier build.Gradle p> xxx pré>

ive essayé de nettoyer et de reconstruire l'application plusieurs fois mais le la classe ne générera pas. J'ai également essayé d'utiliser P>

@Singleton
@Component(modules = AppModule.class)
public interface AppComponent {

    void inject(RegHelper reghelper);
    void inject(headerFooterRecViewAdapter headadapter);
    void inject(SectionListExampleActivity seclistactivity);

}


5 commentaires

Montrez votre code de votre composant.


Utilisez APT au lieu de compiler avec la dépendance du compilateur Dagger.


Si cela fonctionne avant et que cela ne fonctionne pas après avoir ajouté une injection, il y a probablement plus de sortie d'erreur. Si la génération échoue de Dagger ne verra pas de classes mais des descriptions d'erreur détaillées, vous devez prendre un autre coup d'oeil sur les erreurs après Impossible de trouver le symbole


Je reçois cette erreur après erreur: l'exécution a échoué pour la tâche ': App: Compiledebugjavawithjavac'. > La compilation a échoué; Voir la sortie d'erreur du compilateur pour plus de détails.


c'est très éteint puting et je veux vraiment utiliser Dagger 2. Quelle honte


8 Réponses :



0
votes

J'avais un problème similaire avec Dagge 2. J'avais une application d'application et un sous-composant (étant un sous-composant). Et dès que j'ajouterais une nouvelle fonction injecter () dans l'appelcomponent, j'aurais obtenu les erreurs ci-dessus.

Il y avait plus d'erreurs en dehors de l'erreur "Impossible de trouver le symbole", mais ils étaient très vagues et je ne pouvais pas déboguer mes problèmes. Après avoir creusé et rechercher Stackoverflow et différents tutoriels, j'ai réalisé que j'utilisais de manière incorrecte. Spécifiquement la manière dont mon application et mon activité a été configuré.

J'étais sous l'hypothèse que je pouvais injecter mon "activité" ou "fragment" avec mon appcuponque et mon entrepriseComponce. Cela s'est avéré être faux, au moins j'ai découvert que ce n'était pas la bonne façon d'utiliser Dague.

ma solution:

AppComponent < / p> xxx

module d'application xxx

ActivityComponent xxx

ActivityModule xxx

application xxx

activité xxx

Je ne sais pas Si cela résout directement votre problème, il faut au moins une lumière sur la manière d'utiliser le dague correctement.

espère qu'il aide.


0 commentaires

0
votes

J'ai eu le même problème sur ma configuration, Android Studio 2.2 dans la classe d'application suivante:

//Dagger 2
// apt command comes from the android-apt plugin
apt 'com.google.dagger:dagger-compiler:2.7'
compile 'com.google.dagger:dagger:2.7'
provided 'javax.annotation:jsr250-api:1.0'


0 commentaires

0
votes

Il suffit d'ajouter @Module à la classe API et de reconstruire le projet.


0 commentaires

1
votes

Veuillez ajouter

apt 'com.google.dagger:dagger-compiler:2.x'


0 commentaires

1
votes

Configuration d'un projet autonome dans Android Studio 2.3, j'ai mis à jour les fichiers de gradle par défaut comme suit pour obtenir le fichier de composant généré. Les lignes ajoutées ont commenté // dagger2 addition code>

Build.Gradle strong>: p>

apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'   // dagger2 addition

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.demo.dagger2demo"
        minSdkVersion 15
        targetSdkVersion 25
        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 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.3.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'

    // dagger2 addition
    compile 'com.google.dagger:dagger:2.+'
    apt "com.google.dagger:dagger-compiler:2.+"
}


0 commentaires

2
votes

Cela m'a fait l'affaire avec les dépendances (actuelles) Dernières Dagger.

`dependencies{
...
compile 'com.google.dagger:dagger:2.11'
compile 'com.google.dagger:dagger-android-support:2.11'
annotationProcessor "com.google.dagger:dagger-compiler:2.11"
}`


2 commentaires

Solution parfaite. Pas besoin de modifier quoi que ce soit à l'exception de la version 2.11. Merci beaucoup.


Bon. Mais pourriez-vous expliquer plus? Merci:)



0
votes

J'espère que vous allez tous bien. Je faisais face au même problème et j'ai passé beaucoup de temps sur la pile débordement. Enfin, je passe par Ceci et capable de trouver une solution. En bref, vous devez apporter des modifications dans votre fichier de gradle de niveau de module. Veuillez supprimer

Appliquer plugin: 'com.neenbedankt.android-apt'

en haut du fichier. Et remplacer xxx

avec xxx

Après cela reconstruisant votre projet et que vous pourrez importer vos classes de préfixes Dague. Hopw il vous aidera à sortir.


0 commentaires