2016-11-18 97 views
2

如標題所示,Dagger2不生成Dagger *前綴類。我看了一些其他類似的帖子,但似乎沒有任何工作。Dagger2不生成匕首*類

我克隆此回購https://github.com/ecgreb/mvpc,已失效Android Studio中的緩存和重新啓動它,我刪除$Project/.gradle$Home/.gradle/caches,清理和重建項目,但仍不能工作。

這也發生在正在使用Dagger2

我缺少的東西一些項目?

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' 
} 

Application類。

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

你能分享你的ApplicationComponent類 – AJay

+0

https://github.com/antoniolg/androidmvp你可以在這裏看到整個代碼。 @AJay – Bri6ko

+0

這個回購沒有'匕首'代碼。它唯一的mvp – AJay

回答

13

如果使用

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

然後代替

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

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

Android的易不會在上班3.0,所以你需要annotationProcessor來代替每個apt

+0

工作。但是在設置指南https://github.com/google/dagger中,他們使用'annotaionProccessor'。此外,生成的類名是'DaggerMvpcApplication_ApplicationComponent'我認爲他們不贊成這個約定,它不應該是'DaggerApplicationComponent'嗎? – Bri6ko

+2

這個類的名稱發生是因爲你的接口是一個「內部類」('public static interface') – EpicPandaForce

+0

這很有道理。 – Bri6ko

0

對於任何在您的項目中使用Jack Compiler時遇到此類問題的人,您可能已經看到沒有任何解決方案可行,原因與Dagger2本身相關。最新版本不適合傑克,我的經理直到2.2版本的Dagger2纔開始工作。

+0

我也面臨同樣的問題。你是如何解決它的? http://imgur.com/a/9uOxX –

+0

我在Gradle依賴關係中堅持使用Dagger2的舊版本2.2來解決它。如果你想用Jack作爲Dagger的編譯器,那麼現在就沒有別的選擇了。 –

+0

我在Java 8上使用2.2與Jack編譯器,它根本不起作用。 –