Dagger2不会生成"Dagger_"文件

Fir*_*enk 21 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();
}}
Run Code Online (Sandbox Code Playgroud)

和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'
...
Run Code Online (Sandbox Code Playgroud)

有解决方案吗 已经尝试过:清理,重建,更改依赖版本,还删除Gradle缓存并重新安装Android Studio.

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

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

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

lus*_*tig 36

我试图遵循tutsplus的Dagger2教程这里,并试图使用下划线语法(Dagger_ClassnameComponent)时遇到了同样的问题.

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

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

  • +1当我认为`apt` gradle插件会产生它时,这对我有用.然而,它似乎至少需要建立一次. (7认同)
  • @ halfjew22 - 感谢您的解决方案.pjco的信息也帮助了我.在您可以引用DaggerClassnameComponent之前必须首先成功构建项目,否则,它将不会生成生成的/ source/apt/files (2认同)

ste*_*oid 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'
Run Code Online (Sandbox Code Playgroud)


小智 9

看起来他们从生成的东西中删除了下划线.看到Dagger2生成的类突然从Android Studio中丢失了.