作者:竹茹士弘宜来 | 来源:互联网 | 2023-01-19 19:55
我正在使用最新的Android Studio 3 Beta(当前是Beta 4),但似乎无法获得它来生成所需的Dagger类。
在我这边,我创建了一个空项目。然后,我将活动重命名为与匕首笔记YourActivity相匹配。请参阅https://google.github.io/dagger/android.html中的 “注入活动对象” ,其中显示了以下内容:
@Subcomponent(modules = ...)
public interface YourActivitySubcomponent extends AndroidInjector {
@Subcomponent.Builder
public abstract class Builder extends AndroidInjector.Builder {}
}
@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 dispatchingActivityInjector;
@Override
public void onCreate() {
super.onCreate();
DaggerYourApplicationComponent.create()
.inject(this);
}
@Override
public AndroidInjector 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 build应用程序文件添加了以下内容:
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
吗?如果没有,您是如何工作的?
谢谢,凯利
1> KellyTheDev..:
啊哈!我发现了问题。看来我需要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'
}
注:我没有尝试过更换compile
用implementation
的,但我很高兴这个工作。
希望这也可以帮助其他人