2016-11-18 5 views
2

Dagger2はDagger *プレフィックスクラスを生成していません。私はここにいくつかの他の同様の記事を見たが、何も動作していないようです。 Dagger2 Dagger *クラスを生成しない

私は、このレポ https://github.com/ecgreb/mvpcをクローン化されたAndroidのメーカーのキャッシュを無効にされ、それを再起動し、私はクリーン $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' 
} 

アプリケーションクラス。

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" 

ASで動作しませんアンドロイド-APT 3.0だから、aptの代わりにannotationProcessorが必要です。

+0

それはうまくいった。しかし、設定ガイドhttps://github.com/google/daggerで、彼らは 'annotaionProccessor'を使用しています。また、生成されたクラス名は 'DaggerMvpcApplication_ApplicationComponent'です。私は彼らが' DaggerApplicationComponent'ではなく、その規約を非難したと思いました。 – Bri6ko

+2

あなたのインターフェースが "内部クラス"( 'public static interface') – EpicPandaForce

+0

であるので、このクラス名は起こりました。 – Bri6ko

0

ジャックコンパイラをプロジェクトで使用するときにこの種の問題が発生した場合は、その解決策がどれも動作していない可能性があります。その理由はDagger2自体にリンクされています。最新のバージョンはJackとうまく動作しません.Dagger2の2.2バージョンまでは動作します。

+0

私も同じ問題に直面しています。どのように解決しましたか? http://imgur.com/a/9uOxX –

+0

私はGradle依存関係のDagger2の古いバージョン2.2に固執して解決しました。あなたがDaggerでコンパイラとしてJackを使用したいのであれば、他の選択肢は今のところありません。 –

+0

私はJava 8でJackコンパイラで2.2を使用していますが、まったく動作しません。 –

関連する問題