首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误:找不到符号变量DaggerAppComponent

错误:找不到符号变量DaggerAppComponent
EN

Stack Overflow用户
提问于 2017-07-22 05:57:35
回答 8查看 19.6K关注 0票数 16

在尝试集成最新的匕首2版本时,我面临着匕首自动生成的问题。Dagger并不是自动生成DaggerAppComponent,尽管有几次重新构建和使模块应用程序过程。

应用程序类:

代码语言:javascript
运行
复制
public class BaseApplication extends Application
{
    private AppComponent appComponent;

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

    private void initAppComponent()
    {
        DaggerAppComponent.builder()
                .appModule(new AppModule(this))
                .build();
    }

    public AppComponent getAppComponent()
    {
        return appComponent;
    }
}

AppComponent

代码语言:javascript
运行
复制
@Singleton
@Component(modules = AppModule.class)
public interface AppComponent
{
    void inject(BaseApplication application);
}

AppModule:

代码语言:javascript
运行
复制
@Module
public class AppModule
{
    private BaseApplication application;

    public AppModule(BaseApplication app)
    {
        application = app;
    }

    @Provides
    @Singleton
    Context provideContext()
    {
        return application;
    }

    @Provides
    Application provideApplication()
    {
        return application;
    }
}

使用的依赖项:

代码语言:javascript
运行
复制
compile 'com.google.dagger:dagger-android:2.11'
compile 'com.google.dagger:dagger-android-support:2.11'
annotationProcessor 'com.google.dagger:dagger-android-processor:2.11'
androidTestCompile 'com.google.code.findbugs:jsr305:3.0.1'

在这方面的任何帮助都将受到高度赞赏。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2017-07-22 14:51:43

似乎我使用了错误的依赖关系:

代码语言:javascript
运行
复制
compile 'com.google.dagger:dagger-android:2.x'
compile 'com.google.dagger:dagger-android-support:2.x' // if you use the support libraries
annotationProcessor 'com.google.dagger:dagger-android-processor:2.x'

如果在dagger.android中使用类,则应使用上述依赖项。

正确的依赖关系是:

代码语言:javascript
运行
复制
compile 'com.google.dagger:dagger:2.x'
annotationProcessor 'com.google.dagger:dagger-compiler:2.x'
票数 26
EN

Stack Overflow用户

发布于 2018-11-25 18:10:50

你需要这两条线

代码语言:javascript
运行
复制
implementation 'com.google.dagger:dagger:2.16'
kapt 'com.google.dagger:dagger-compiler:2.16'

当使用kotlin时,使用kapt而不是annotationProcessor。生成的类,如Dagger+AppComponentClass,例如:DaggerAppComponent

票数 6
EN

Stack Overflow用户

发布于 2017-11-02 22:50:07

为Java项目添加下面的依赖项解决了问题

代码语言:javascript
运行
复制
annotationProcessor 'com.google.dagger:dagger-compiler:2.27'

对于Kotlin项目(在添加kotlin-kapt之后):

代码语言:javascript
运行
复制
kapt "com.google.dagger:dagger-compiler:2.27"
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45251222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档