본문 바로가기

전체 글

(83)
[Android] 카카오링크 키해시(keyHash) 이슈 처리 카카오링크 키해시(keyHash) 이슈 처리 ApiError( statusCode=401, reason=InvalidToken, response=ApiErrorResponse( code=-401, msg=android keyhash mismatched! caller=~~~~~~~~~~~. check out registered keyhash., apiType=null, requiredScopes=null, allowedScopes=null ) ) 현상 이미 구현되어 사용 중인 카카오링크 기능에서 갑작스럽게 키해시(keyHash) 이슈 발생 디버그 버전에서는 정상적으로 작동하나, 스토어에 올린 App Bundle 버전에서는 '키해시 이슈'가 발생 스토어에 새로 등록 시 GooglePlay App Signin..
[Android] Resource Uri 경로 얻기 (Drawable, Raw ...) Resource Uri 경로 얻기 (Drawable, Raw ...) Resource Uri 운영중인 자사 앱에서는 현재 Glide 이미지 라이브러리를 사용 서버에서 RESTful API로 받아온 JSON 내부 Image 배열 값이 비어있다면, 이미지 Resource의 경로를 가져와 Glide에 사용하려는 목적으로 찾아본 Resource Uri Path 얻는 방법 Default Uri.Builder() .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE) .authority(resources.getResourcePackageName(R.raw.test_image)) .appendPath(resources.getResourceTypeName(R.raw.test_image)..
[Android] Glide RequestListener 이미지 바이트, 크기 확인하기 Glide RequestListener 이미지 바이트, 크기 확인하기 Glide RequestListener 등록 RequestListener : Glide의 이미지 Load 실패 or Load 성공에 Callback 받는 Listener 이미지 Load 실패 시와 성공 시에 따른 처리가 가능하며, 여기선 리사이징된 이미지 바이트와 크기를 확인 실패 시 onLoadFailed() Callback 성공 시 onResourceReady() Callback GlideUtil.with(binding.ivImage) { load(item?.encodePath()) .override(Target.SIZE_ORIGINAL) .listener(createLogListener())// RequestListener 추가 ..
[Android] XML TextView Style 동적 설정 - BindingAdapter XML TextView Style 동적 설정 데이터바인딩(DataBinding)을 통한 Style Code 설정 XML Style DataBinding Fail XML 데이터바인딩에서는 Style옵션을 지원하지 않아 위의 코드처럼 구현이 불가능합니다 상황에 따라 TextView의 Font Style을 다르게 동적으로 설정하려면 Code 작업 필요 > TextView의 BindingAdapter를 구현했습니다 1. TextView BindingAdapter Function @BindingAdapter("bindTextViewStyle") fun TextView.bindTextViewStyle(styleResourceId: Int) { if(styleResourceId != null) this.setText..
[Android] Default Activity not found 에러 해결방법 Default Activity not found 에러 해결방법 Default Activity Not Found 에러 발생 시 여러 해결방법들이 있는데, 본인이 직접 시도해본 방법들과 최종으로 본인이 해결한 방법을 정리했습니다 Default Activity Not Found DefaultActivity 지정 Run/Debug Configurations 설정에서 Default Activity를 직접 지정해주는 방법 1. Edit Configurations 설정 띄우기 방법 1) Action 검색(Shift+Shift)에서 Edit Configurations 검색해서 띄우거나 방법 2) Android Studio 상단 Run부분에서 띄우기 2. Launch Options의 Launch 옵션 변경 기본설정인 D..
[Android] Unit Test - Mockito란? Unit Test - Mockito란? Mockito란? Unit Test를 위한 Java Mocking Framework 유닛 테스트에서 가짜 객체(Mock)를 지원해주는 Framework 구성 Mock 객체 생성 - Mockito.mock() 메서드 (Static 메서드로 클래스명 생략가능) Mock 객체 동작 지정 - Stubbing이라고 하며 when().thenReturn() 방식 Mock 객체 동작 수행확인 - verify() 공식홈페이지에서 자세히 확인가능 - [보러가기] build.gradle 설정 2020.06.28 기준 최신버전 '1.9.5' - [최신버전 보러가기] dependencies { ... testImplementation group: 'org.mockito', name: '..
[Android] Retrofit2 사용예시 - MVP패턴 + Github API + Glide Retrofit2 사용예시 - Github REST API + MVP 패턴 + Glide 사용 패키지 구조 View : 화면 표시 및 사용자 이벤트 Presenter에게 전달해서 처리를 위임 (Activity) Presenter : View - Model 사이 매개체 (View로부터 받은 이벤트를 처리하고 Model을 업데이트) Contract : View - Presenter간의 사용할 이벤트를 정의한 인터페이스 Model : 데이터, Presenter를 통해 View와 분리한 MVP패턴 구현 Network : Retrofit REST 메서드 정의 인터페이스 + Client 구현 Adapters : RESTful API로 받아온 사용자 목록을 보여줄 RecyclerView를 관리하는 Adatper [G..
[Android][Kotlin] Koin #2 - 자세히 알아보기 Koin #2 - Definitions Definitions Module 정의 및 사용을 위한 등록 정의를 설명 [Koin Document 사이트] 기반으로 작성 Module 정의 Koin에서 Module은 모든 구성요소를 선언하는 공간, 즉 Koin으로 제공할 객체를 명세하는 곳 module 전역함수를 사용해서 Koin 모듈을 선언 val myModule = module { // Dependencies 작성 (제공할 객체) } 여러 Module 사용 Koin은 구성요소를 반드시 동일한 모듈안에 모두 선언할 필요가 없습니다 Koin은 기본적으로 지연초기화 방식으로 인스턴스 요청 시점에 Module을 통해 인스턴스를 생성하고 의존성을 주입하기 때문에, 서로다른 Module을 여러개로 나누어서 Koin에 사..