gpt4 book ai didi

android - DaggerApplicationComponent 未编译

转载 作者:行者123 更新时间:2023-12-02 16:26:12 25 4
gpt4 key购买 nike

我正在使用 android studio 3 的最新测试版(当前为测试版 4),但我似乎无法让它生成所需的 Dagger 类。

从我这边我创建了一个空项目。然后我将该 Activity 重命名为“YourActivity”以匹配 Dagger 注释。请参阅 https://google.github.io/dagger/android.html 中的“注入(inject) Activity 对象” ,这表明:

@Subcomponent(modules = ...)
public interface YourActivitySubcomponent extends AndroidInjector<YourActivity> {
@Subcomponent.Builder
public abstract class Builder extends AndroidInjector.Builder<YourActivity> {}
}

@Module(subcomponents = YourActivitySubcomponent.class)
abstract class YourActivityModule {
@Binds
@IntoMap
@ActivityKey(YourActivity.class)
abstract AndroidInjector.Factory<? extends Activity>
bindYourActivityInjectorFactory(YourActivitySubcomponent.Builder builder);
}

@Component(modules = {..., YourActivityModule.class})
interface YourApplicationComponent {}

@ActivityScope
@ContributesAndroidInjector(modules = { /* modules to install into the subcomponent */ })
abstract YourActivity contributeYourActivityInjector();

public class YourApplication extends Application implements HasActivityInjector {
@Inject DispatchingAndroidInjector<Activity> dispatchingActivityInjector;

@Override
public void onCreate() {
super.onCreate();
DaggerYourApplicationComponent.create()
.inject(this);
}

@Override
public AndroidInjector<Activity> activityInjector() {
return dispatchingActivityInjector;
}
}

//the renamed activity
public class YourActivity extends Activity {

public void onCreate(Bundle savedInstanceState) {
//added this line
AndroidInjection.inject(this);

super.onCreate(savedInstanceState);
}
}

我还从该页面为 gradle 构建应用程序文件添加了以下内容:

dependencies {
compile 'com.google.dagger:dagger-android:2.11'
compile 'com.google.dagger:dagger-android-support:2.11' // if you use the support libraries
annotationProcessor 'com.google.dagger:dagger-android-processor:2.11'
}

因为我仍然没有看到任何东西,所以我尝试将编译更新为实现,但仍然没有运气,如果你好奇,看起来像:

dependencies {
implementation 'com.google.dagger:dagger-android:2.11'
implementation 'com.google.dagger:dagger-android-support:2.11' // if you use the support libraries
annotationProcessor 'com.google.dagger:dagger-android-processor:2.11'
}

此外,我还找到了默认设置,可以打开默认的 Build -> Compiler -> Annotation Processors 来启用它。我在创建新项目之前这样做了。

在这一切之后,似乎没有任何效果。这在 android studio 3.x 中被破坏了吗?如果没有,你是如何让它发挥作用的?

谢谢,凯利

最佳答案

啊哈!我发现了这个问题。看来我需要另一个 annotationProcessor 行用于 gradle 应用程序文件

annotationProcessor 'com.google.dagger:dagger-compiler:2.11'

虽然他们的示例不太正常,但至少我现在看到了 DaggerYourApplicationComponent

完整的 gradle 部分:

dependencies {
compile 'com.google.dagger:dagger-android:2.11'
compile 'com.google.dagger:dagger-android-support:2.11' // if you use the support libraries
annotationProcessor 'com.google.dagger:dagger-android-processor:2.11'
annotationProcessor 'com.google.dagger:dagger-compiler:2.11'
}

注意:我还没有尝试用 implementation 替换 compile,但我很高兴这有效。

希望这对其他人也有帮助

关于android - DaggerApplicationComponent 未编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46056421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com