在多模块项目中使用刀柄时出错

时间:2021-04-30 12:44:54

标签: android kotlin clean-architecture dagger-hilt

在我的项目中,我有三个模块: 1.应用程序 2.数据 3.域名

我使用刀柄进行依赖注入。但我不断收到以下错误:

E:\Projects\AndroidStudioProjects\Fintock\app\build\generated\source\kapt\debug\com\example\fintock\Hilt_HiltApplication.java:20: error: cannot find symbol
      return DaggerHiltApplication_HiltComponents_SingletonC.builder()
             ^
  symbol: variable DaggerHiltApplication_HiltComponents_SingletonC

这是刀柄模块的代码:

NetworkModule.kt (在数据模块中)

package com.example.data.di

import com.example.data.NetworkConstants
import com.example.data.api.AlphaVintageApi
import com.jakewharton.retrofit2.adapter.kotlin.coroutines.CoroutineCallAdapterFactory
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.Retrofit
import retrofit2.converter.moshi.MoshiConverterFactory
import javax.inject.Qualifier

@Qualifier
@Retention(AnnotationRetention.BINARY)
annotation class AlphaVintageRetrofit

@Qualifier
@Retention(AnnotationRetention.BINARY)
annotation class NewsApiRetrofit

@Module
@InstallIn(SingletonComponent::class)
object NetworkModule {
    @Provides
    fun provideInterceptor(): HttpLoggingInterceptor {
        return HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)
    }

    @Provides
    fun provideOkHttpClient(httpLoggingInterceptor: HttpLoggingInterceptor): OkHttpClient {
        return OkHttpClient.Builder()
            .addInterceptor(httpLoggingInterceptor)
            .build()
    }

    @Provides
    fun provideMoshiConverter(): MoshiConverterFactory {
        return MoshiConverterFactory.create(
            Moshi.Builder()
                .add(KotlinJsonAdapterFactory())
                .build()
        )
    }

    @AlphaVintageRetrofit
    @Provides
    fun provideAlphaVintageRetrofitModule(
        moshiConverterFactory: MoshiConverterFactory,
        okHttpClient: OkHttpClient
    ): Retrofit {
        return Retrofit.Builder()
            .baseUrl(NetworkConstants.ALPHA_VINTAGE_BASE_URL)
            .addCallAdapterFactory(CoroutineCallAdapterFactory())
            .addConverterFactory(moshiConverterFactory)
            .client(okHttpClient)
            .build()
    }

    @NewsApiRetrofit
    @Provides
    fun provideNewsApiRetrofitModule(
        moshiConverterFactory: MoshiConverterFactory,
        okHttpClient: OkHttpClient
    ): Retrofit {
        return Retrofit.Builder()
            .baseUrl(NetworkConstants.NEWS_API_BASE_URL)
            .addCallAdapterFactory(CoroutineCallAdapterFactory())
            .addConverterFactory(moshiConverterFactory)
            .client(okHttpClient)
            .build()
    }

    @Provides
    fun provideAlphaVintageServiceApi(@AlphaVintageRetrofit retrofit: Retrofit): AlphaVintageApi {
        return retrofit.create(AlphaVintageApi::class.java)
    }
}

UsecaseModules.kt (在域模块中)

@Module
@InstallIn(SingletonComponent::class)
object UsecaseModule {
    @Provides
    @Singleton
    fun provideGetStockInformationUseCase(stockInDetailRepository: StockInDetailRepository) : GetStockInformationUseCase {
         return GetStockInformationUseCase(stockInDetailRepository)
    }
}

HiltApplication.kt

@HiltAndroidApp
class HiltApplication : Application()

当我尝试在我的应用程序中使用干净的架构时出现问题。以前,当我只有一个模块(而不是像现在这样的三个)时,没有错误。

我已经被这个错误困扰了好几天,所以任何形式的帮助都将不胜感激。 !!

提前致谢!!

0 个答案:

没有答案