Dagger2不会生成“Dagger_”文件

时间:2015-04-08 10:25:36

标签: android dependency-injection dagger-2

我使用匕首2一段时间了,但今天尝试编译得到了这个错误:

  

错误:(13,31)错误:找不到符号类Dagger_GlobalComponent

     

错误:(38,21)错误:找不到符号变量Dagger_GlobalComponent

所以这是代码:

public class MyAppApplication extends Application {

private static GlobalComponent component;

@Override
public void onCreate() {
    super.onCreate();

    component = Dagger_GlobalComponent.builder()
            .busModule(new BusModule())
            .syncModule(new SyncModule())
            .serviceModule(new ServiceModule())
            .contextModule(new ContextModule(this))
            .persistenceModule(new PersistenceModule(this))
            .build();
}}

gradle依赖项:

...
compile 'com.google.dagger:dagger:2.0-SNAPSHOT'
apt 'com.google.dagger:dagger-compiler:2.0-SNAPSHOT'
provided 'org.glassfish:javax.annotation:10.0-b28'
...

任何解决方案?已尝试:清理,重建,更改依赖版本,还删除Gradle缓存并重新安装Android Studio。

如果它也有助于在此示例项目中出现相同的错误:

https://github.com/gk5885/dagger-android-sample

https://github.com/mgrzechocinski/dagger2-example

3 个答案:

答案 0 :(得分:36)

我试图在tutsplus here上关注Dagger2教程,并在尝试使用下划线语法(Dagger_ClassnameComponent)时遇到了同样的问题。

正如其他人所说,新的Dagger API不使用下划线语法,而只是使用语法DaggerClassnameComponent。但是,在我的简单应用程序中尝试使用新语法时,找不到类DaggerClassnameComponent。我相信它应该位于app / build / generated / source / apt / debug / packagename / component文件夹中。

起初,我没有在上述文件夹下生成任何文件。但是,我的解决方案是清理和构建项目,然后我可以按预期使用Component类。

答案 1 :(得分:10)

Dagger 2现已发布,因此您需要更改您的gradle依赖项:

compile 'com.google.dagger:dagger:2.0'
provided 'com.google.dagger:dagger-compiler:2.0'
provided 'org.glassfish:javax.annotation:10.0-b28'

答案 2 :(得分:9)

看起来他们从生成的内容中删除了下划线。请参阅Dagger2 generated class is all of a sudden missing from Android Studio