[Hi-v2] - 3_DI 세팅하기

박성현·2023년 5월 16일
0

MSG_Hi-v2

목록 보기
3/5

소개

MSG라는 교내 동아리에서 Hi-v2(홈베이스 관리 시스템)을 만드면서 일어났던 일을 정리한 내용입니다.


작업내용

  • Hilt, Retrofit, OkHttp 의존성 주입하기
  • HiltAndroidApp 만들기 (Application)
  • Base_URL을 local.properties에 저장하기
  • Network Module 만들기

주요코드

  • android.yml
    • CI 파일에서 깃허브 시크릿 변수를 읽을 수 있게 해주는 코드입니다.
- name: Create LOCAL_PROPERTIES
        run: echo '${{ secrets.LOCAL_PROPERTIES }}' > ./local.properties
  • app/build.gradle.kts
    • local.properties에 저장된 변수 값 가져오는 코드입니다.
android {
        buildConfigField(
            "String",
            "BASE_URL",
            getApiKey("BASE_URL")
        )
        ...
}

fun getApiKey(propertyKey: String): String {
    val propFile = rootProject.file("./local.properties")
    val properties = Properties()
    properties.load(FileInputStream(propFile))
    return properties.getProperty(propertyKey)
}
  • NetworkModule.kt
    • Hilt를 이용한 의존성 주입을 위해 모듈을 만들었습니다.
@Module
@InstallIn(SingletonComponent::class)
object NetworkModule {
    @Provides
    @Singleton
    fun provideOkhttpClient(): OkHttpClient {
        return OkHttpClient.Builder()
            .connectTimeout(30, TimeUnit.SECONDS)
            .readTimeout(30, TimeUnit.SECONDS)
            .writeTimeout(30, TimeUnit.SECONDS)
            .build()
    }

    @Provides
    @Singleton
    fun provideRetrofitInstance(
        okHttpClient: OkHttpClient,
        gsonConverterFactory: GsonConverterFactory
    ): Retrofit {
        return Retrofit.Builder()
            .baseUrl(BuildConfig.BASE_URL)
            .client(okHttpClient)
            .addConverterFactory(gsonConverterFactory)
            .build()
    }

    @Provides
    @Singleton
    fun provideConverterFactory(): GsonConverterFactory {
        return GsonConverterFactory.create()
    }
}

적용 중 일어났던 에러

  • Property key 'BASE_URL' not found in local.properties

    • 깃허브 시크릿 변수에 value 형식으로 넣어주던 값을 key-value 형식으로 수정하여 값을 넣어줬습니다.
  • 원래 코드

"https://www.example.com"
  • 수정한 코드
BASE_URL="https://www.example.com"

MSG 깃허브

Hi-v2 Android 깃허브

작업한 PR

profile
성장하고 싶은 안드로이드 개발자입니다.

0개의 댓글

관련 채용 정보