gpt4 book ai didi

android - 当 Dagger 不自动生成组件代码时对 gradle 文件进行故障排除

转载 作者:行者123 更新时间:2023-11-30 05:03:08 26 4
gpt4 key购买 nike

更新:链接到项目 -> https://drive.google.com/open?id=1D8mYZL3Pb8FezPp5FOKA20-Um5kTRYxH

我一直在使用 Dagger 并遵循本教程直到步骤 5.4:https://www.vogella.com/tutorials/Dagger/article.html#special-treatment-of-fields-in-dagger

我添加了以下依赖项:

    api 'com.google.dagger:dagger:2.20'
api 'com.google.dagger:dagger-android:2.20'
annotationProcessor 'com.google.dagger:dagger-android-processor:2.20'
annotationProcessor 'com.google.dagger:dagger-compiler:2.20'
compileOnly 'javax.annotation:jsr250-api:1.0'

但 IDE 无法解析“DaggerMyApplicationComponent”(在 onCreate() 中)。好像 Dagger 无法生成代码。

MyApplication.java

import android.app.Activity;
import android.app.Application;

import javax.inject.Inject;

import dagger.android.DispatchingAndroidInjector;
import dagger.android.HasActivityInjector;

public class MyApplication extends Application implements HasActivityInjector {

@Inject
DispatchingAndroidInjector<Activity> dispatchingAndroidInjector;

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

@Override
public DispatchingAndroidInjector<Activity> activityInjector() {
return dispatchingAndroidInjector;
}
}

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.parassidhu.daggerkumar">

<application
android:name=".MyApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

MyApplicationModule.java:

import dagger.Module;
import dagger.android.ContributesAndroidInjector;

@Module
public abstract class MyApplicationModule {

@ContributesAndroidInjector
abstract MainActivity contributeActivityInjector();
}

MyApplicationComponent.java:

import javax.inject.Singleton;

import dagger.Component;
import dagger.android.AndroidInjectionModule;
import dagger.android.AndroidInjector;

@Singleton
@Component(modules = {AndroidInjectionModule.class, MyApplicationModule.class})
public interface MyApplicationComponent extends AndroidInjector<MyApplication> {

}

请指出可能有什么问题。我尝试了 Make Project、Clean、Rebuild、Invalidate 和 Restart 几次,但没有任何帮助。

最佳答案

如评论中所述,从 gradle 中删除所有不必要的 kotlin 依赖项和插件。如果您的项目中没有 kotlin 代码,那么将您的模块称为 kotlin 模块是没有意义的。 Dagger 认为它应该生成 kotlin 代码,但它没有 kotlin 编译器来执行此操作。因此,要么将整个代码更改为 kotlin 并使用 kotlin 依赖项,要么坚持使用 java 并删除所有 kotlin 依赖项。

关于android - 当 Dagger 不自动生成组件代码时对 gradle 文件进行故障排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57863231/

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