2016-11-18 4 views
2

Wie der Titel sagt, erzeugt Dagger2 nicht die Dagger * Präfix Klassen. Ich habe mir hier ähnliche Artikel angesehen, aber nichts scheint zu funktionieren.Dagger2 Not Dagger * Klassen generieren

ich geklont dieses Repo https://github.com/ecgreb/mvpc, für ungültig erklärt den Cache von Android Studio und neu gestartet, ich gelöscht $Project/.gradle und $Home/.gradle/caches, sauber und das Projekt neu und noch nicht funktioniert.

Dies geschah auch einige Projekte auf, die Dagger2

verwenden Bin ich etwas fehlt?

apply plugin: 'com.android.application' 
apply plugin: 'com.neenbedankt.android-apt' 

android { 
    compileSdkVersion 24 
    buildToolsVersion "24.0.3" 

    defaultConfig { 
    applicationId "com.example.ecgreb.mvpc" 
    minSdkVersion 15 
    targetSdkVersion 24 
    versionCode 1 
    versionName "1.0" 
    } 
    buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
    } 
} 

tasks.withType(Test) { 
    testLogging { 
    exceptionFormat "full" 
    events "started", "skipped", "passed", "failed" 
    showStandardStreams true 
    } 
} 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile 'com.android.support:appcompat-v7:24.2.1' 
    compile 'com.android.support:design:24.2.1' 

    compile "com.google.dagger:dagger:2.7" 
    annotationProcessor "com.google.dagger:dagger-compiler:2.7" 
    provided 'javax.annotation:jsr250-api:1.0' 

    testCompile 'junit:junit:4.12' 
    testCompile 'org.mockito:mockito-core:1.10.19' 
    testCompile 'org.assertj:assertj-core:1.7.1' 
    testCompile 'org.robolectric:robolectric:3.1.2' 
    testCompile 'org.khronos:opengl-api:gl1.1-android-2.1_r1' 
} 

Die Anwendungsklasse.

package com.example.ecgreb.mvpc; 

import android.app.Application; 

import com.example.ecgreb.mvpc.controller.LoginActivity; 

import javax.inject.Singleton; 

import dagger.Component; 
public class MvpcApplication extends Application { 

    @Singleton @Component(modules = { LoginModule.class }) public interface ApplicationComponent { 
    void inject(LoginActivity loginActivity); 
    } 

    private ApplicationComponent component; 

    @Override public void onCreate() { 
    super.onCreate(); 
    //DaggerApplicationComponent IS NOT BEING GENERATED 
    component = DaggerApplicationComponent.builder().build(); 
    } 

    public ApplicationComponent component() { 
    return component; 
    } 
} 
+0

Können Sie bitte Ihre ApplicationComponent-Klasse teilen – AJay

+0

https://github.com/antoniolg/androidmvp Sie können den gesamten Code hier sehen. @AJay – Bri6ko

+0

gibt es keinen 'Dolch' Code auf diesem Repo. es ist nur mvp – AJay

Antwort

13

Wenn Sie

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

Dann statt

annotationProcessor "com.google.dagger:dagger-compiler:2.7" 

tun

apt "com.google.dagger:dagger-compiler:2.7" 

Android-apt wird AS nicht funktionieren in 3.0 obwohl, so dass Sie annotationProcessor anstelle von jedem apt benötigen.

+0

Das hat funktioniert. Im Einrichtungsleitfaden https://github.com/google/dagger wird jedoch der AnnotationProcessor verwendet. Der generierte Klassenname ist 'DaggerMvpcApplication_ApplicationComponent'. Ich dachte, dass sie diese Konvention verwarf, sollte es nicht' DaggerApplicationComponent' sein? – Bri6ko

+2

Dieser Klassenname ist aufgetreten, weil Ihre Schnittstelle eine "innere Klasse" ("public static interface") ist. – EpicPandaForce

+0

Das ist sinnvoll. – Bri6ko

0

Für jeden, der diese Probleme bei der Verwendung des Jack Compilers mit Ihrem Projekt hat, haben Sie vielleicht gesehen, dass keine der Lösungen funktioniert, und der Grund ist mit Dagger2 selbst verbunden. Die neuesten Versionen funktionieren nicht gut mit Jack, ich Manager, um es bis zur 2.2 Version von Dagger2 arbeiten zu lassen.

+0

Ich habe auch das gleiche Problem. Wie hast du es gelöst? http://imgur.com/a/9uOxX –

+0

Ich löste es, indem ich an der alten Version 2.2 von Dagger2 in meiner Gradle-Abhängigkeit festhalte. Wenn du Jack als Compiler mit Dagger benutzen willst, hast du keine andere Wahl als jetzt. –

+0

Ich verwende 2.2 mit Jack Compiler auf Java 8, und es funktioniert überhaupt nicht. –

Verwandte Themen