[에러] RequestOptions cannot be converted to GlideOptions

2021. 8. 25. 11:26
728x90

 

 [ 에러1 ] 

 

Firebase Users 정보로부터 사용자의 카카오 프로필사진을 불러오던 중에 에러가 발생했다.

그래서 그동안 미루고 미루던 Glide Module을 결국 하나 장만해야겠구나 싶어서 검색을 좀 해보았다.

bad bitmap error when setting Uri

 

[ 해결책 ]

 

1. gradle.properties

 

android.useAndroidX=true
android.enableJetifier=true

 

2. build.gradle(Module:app)

 

plugins {
    id 'kotlin-kapt'
}
.
.
.
dependencies {
    implementation 'com.github.bumptech.glide:glide:4.12.0'
    kapt 'com.github.bumptech.glide:compiler:4.12.0'
    //noinspection LifecycleAnnotationProcessorWithJava8
    kapt "android.arch.lifecycle:compiler:1.1.1"
}

 

3. GlideModule.kt

 

package com.example.tripplanner

import android.annotation.SuppressLint
import android.content.Context
import com.bumptech.glide.GlideBuilder
import com.bumptech.glide.annotation.GlideModule
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.module.AppGlideModule
import com.bumptech.glide.request.RequestOptions

@GlideModule
class TripPlannerGlideModule : AppGlideModule() {

    @SuppressLint("CheckResult")
    override fun applyOptions(context: Context, builder: GlideBuilder) {
        super.applyOptions(context, builder)
        builder.apply { RequestOptions().diskCacheStrategy(DiskCacheStrategy.ALL) }
    }

}

 

4. MainActivity.kt

기존 : uPhoto.setImageURI(user.photoUrl)

현재 : GlideApp 사용

 

val user = Firebase.auth.currentUser
user?.let {

	// 네비게이션 바의 헤더 아이템 id 필요
	val header : View = binding.naviView.getHeaderView(0)
	val uPhoto = header.findViewById<ImageView>(R.id.profilepic)

	GlideApp.with(context)
		.load(user.photoUrl)
		.into(uPhoto)
}

 

5. Build > Clean Project

6. Build > Rebuild Project

 

 

 

 [ 에러2 ] 

 

근데 위에 GlideApp을 적용하고 빌드했더니 또 다른 문제가 생겼다.

내가 사용중인 requestoptions 타입이 glideoptions 타입으로 바뀌지 않았다.

incompatible types. found: 'com.bumptech.glide.request.requestoptions', required: 'com.example.tripplanner.glideoptions'

 

[ 해결책 ]

 

1. build.gradle(Module:app)

아래 두 줄의 버전이 일치하는지 확인 (4.12.0 으로 일치하므로 이상 없음)

 

    implementation 'com.github.bumptech.glide:glide:4.12.0'
    kapt 'com.github.bumptech.glide:compiler:4.12.0'

 

2. GlideOptions.java

이 파일에서만 에러가 뜨길래 빨간줄 부분에 마우스를 대보니까 내가 type casting을 해주어야하는 것 같았다.

그래서 일일이 손가락 노동을 하고나서 다시 빌드했더니 다행히 문제가 해결되었다.

 

// 기존
return new GlideOptions().sizeMultiplier(value);

// 바꾼 뒤
return (GlideOptions) new GlideOptions().sizeMultiplier(value);

 

근데 희안하게 지금 다시 해당 파일 확인해보니까 빌드 이후에 명시적 캐스팅한 (GlideOptions) 부분이 사라져서 기존 형태로 바뀌었다. 안드로이드 스튜디오가 숨겨준건지 뭔지 모르겠지만 다행히 아무 에러가 뜨지않고 앱이 잘 작동한다.

 

[ 참고자료 ]

 

 

 

728x90

BELATED ARTICLES

more