2015-04-08 10 views
14

Ich habe seit Monaten Dagger2 in Android Studio benutzen aber heute alle plötzlich es aufgehört zu arbeiten und mir die folgende Fehlermeldung zu geben HierDagger2 generierte Klasse ist ganz plötzlich von Android Studio fehlt

error: cannot find symbol 
     return Dagger_Injector.builder() 
      ^

symbol: variable Dagger_Injector 
    location: class Initializer 
Note: Some input files use or override a deprecated API. 
Note: Recompile with -Xlint:deprecation for details. 
Note: Some input files use unchecked or unsafe operations. 
Note: Recompile with -Xlint:unchecked for details. 
1 error 

ist der Code, wo es

@Singleton 
@Component(modules = {TestService.class, ServiceFactory.class}) 
public interface Injector { 

    public final static class Initializer { 

     public static Injector init(ApplicationLoader app, boolean bypassVerification) { 
      return Dagger_Injector.builder() 
        .testService(new TestService()) 
        .serviceFactory(new ServiceFactory(app)) 
        .build(); 
     } 

    } 

    void inject(ApplicationLoader obj); 
} 

Hier ist meine gradle Info

------------------------------------------------------------ 
Gradle 2.2.1 
------------------------------------------------------------ 

Build time: 2014-11-24 09:45:35 UTC 
Build number: none 
Revision:  6fcb59c06f43a4e6b1bcb401f7686a8601a1fb4a 

Groovy:  2.3.6 
Ant:   Apache Ant(TM) version 1.9.3 compiled on December 23 2013 
JVM:   1.8.0_05 (Oracle Corporation 25.5-b02) 
OS:   Mac OS X 10.10.2 x86_64 

Und h versagt Es ist der Inhalt meines Build.gradle

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

android { 
    compileSdkVersion 21 
    buildToolsVersion '21.1.0' 

    defaultConfig { 
     applicationId "com.test" 
     minSdkVersion 11 
     targetSdkVersion 21 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner" 
    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'     
     } 

    } 

    productFlavors { 
    } 

    lintOptions { 
     abortOnError false 
    } 

    sourceSets { 
     androidTest { 
      setRoot('src/androidTest') 
     } 
    } 
    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_7 
     targetCompatibility JavaVersion.VERSION_1_7 
    } 
    dexOptions { 
     preDexLibraries = false 
    } 
    packagingOptions { 
     exclude 'META-INF/LICENSE.txt' 
     exclude 'META-INF/NOTICE.txt' 
    } 
} 

tasks.withType(Test) { 
    include '**/*Test.class' 
    exclude '**/espresso/**/*.class' 

    // configure max heap size of the test JVM 
    maxHeapSize = "2048m" 
} 

dependencies { 
    androidTestCompile 'junit:junit:4.12' 
    androidTestCompile('org.robolectric:robolectric:2.4') { 
     exclude group: 'commons-logging', module: 'commons-logging' 
     exclude group: 'org.apache.httpcomponents', module: 'httpclient' 
    } 
    compile 'javax.servlet:javax.servlet-api:3.0.1' 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile files('libs/renderscript-v8.jar') 
    compile files('libs/jsonic-1.2.0.jar') 
    compile 'com.android.support:appcompat-v7:20.+' 
    compile 'com.google.android.gms:play-services:3.2' 
    compile 'com.squareup.retrofit:retrofit:1.6.1' 
    compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0' 
    compile 'com.squareup.okhttp:okhttp:2.0.0' 
    compile 'com.squareup:otto:1.3.5' 
    compile 'com.commonsware.cwac:merge:1.0.2' 
    compile 'com.j256.ormlite:ormlite-android:4.48' 
    compile 'com.android.support:support-v4:20.0.0' 
    compile 'io.nlopez.smartlocation:library:2.0.8' 
    compile 'com.google.dagger:dagger:2.0-SNAPSHOT' 
    apt  'com.google.dagger:dagger-compiler:2.0-SNAPSHOT' 
    compile 'org.glassfish:javax.annotation:10.0-b28' 
    compile 'com.github.amlcurran.showcaseview:library:5.0.0' 
    compile 'com.edmodo:cropper:1.0.1' 
} 

Jede Hilfe wird geschätzt.

+1

Diese eine Veränderung in Dagger zu sein scheint 2 selbst. Ich sehe die gleichen Probleme, obwohl ich nichts von gestern geändert habe. Unglücklicherweise ist Dolch 2 immer noch ein Schnappschuss, also könnte es sich ändern:/ – Tomik

+0

Das gleiche Problem hier. Ich habe sogar versucht, die Version 2.0 von Dagger zu verwenden, aber sie schlägt immer noch fehl. – simekadam

Antwort

20

So sieht es aus irgendeinem Grund nicht mehr Unterstriche in Namen der generierten Komponentenklassen. Schau einfach in deinen build/generated/source/apt Ordner, um zu sehen, dass es sich wirklich so geändert hat.

es Fix von Dagger_Injector mit DaggerInjector usw. ersetzt

+0

Ja, das ist richtig. Sie haben es in der Release-Version geändert. Obwohl die Dokumentation [http://google.github.io/dagger/](http://google.github.io/dagger/) immer noch den alten Weg mit dem Präfix 'Dagger_' erwähnt. Javadoc von 'Component' erwähnt' Dagger'-Präfix. – Tomik

+0

hmmmm ... ziemlich seltsam, wie hier in dieser Ausgabe https://github.com/google/dagger/issues/58 - sie scheinen sich gemeinsam auf die Verwendung des Unterstrichs zu einigen. Wie auch immer, du hast Recht. Das Entfernen des Unterstrichs löst es. – nemo

+0

Sie haben Dagger 2.0 (Nicht-Snapshot) vor ein paar Stunden veröffentlicht. Ein Teil der API hat sich geändert. http://www.reddit.com/r/androiddev/comments/31ufbh/dagger_20_has_been_released/ –

1

In meinem Fall war ich mit Reich und wegen apt Mismatch Ich war nicht den automatisch generierten DaggerComponent erhalten zu können.

I ersetzt

classpath "io.realm:realm-gradle-plugin:1.2.0" 

mit

classpath "io.realm:realm-gradle-plugin:3.1.2" 

und angewendet, um das Plugin

apply plugin: 'realm-android' 

in app-Ebene gradle Datei

Verwandte Themen