![[안드로이드] Authenticator, Hilt dependency cycle 에러](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxZ8Mw%2FbtsMPKIFdmy%2FcSLLvetDkJJMGiO6ctNAjk%2Fimg.png)
안녕하세요 주코입니다.최근 팀 프로젝트에서 Google OAuth를 개발하던중 RefreshToken을 갱신할때 Hilt의 dependency cycle (순환참조) 에러가 발생하였습니다. 머리를 골골 싸메다가 꽤 괘찮은 해결법을 찾게되어 이렇게 글을 올리게 되었습니다. 원인Hilt을 통해 Network Module를 설정하고 RefreshToken을 갱신하기위해 Authenticator에서 API와 통신하고있는 DataSource를 주입하고 있었습니다.이때, dependency cycle이 발생하였습니다. ( 원인, 예시코드 )@Module@InstallIn(SingletonComponent::class)object NetworkModule { private val logging = HttpLog..
![[안드로이드] Room 에러: java.lang.IllegalStateException: Storage for [C:\{...}\build\kspCaches\debug\symbolLookups\id-to-file.tab] is already registered](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbH3tAm%2FbtsMz7D24gP%2FTfXnjETZLJkte4lxYRnje0%2Fimg.png)
안녕하세요 주코입니다. 오늘은 개인 앱 개발도중 Room의 AutoMigrations을 설정하다가 오류가 발생하였는데, 치명적이라고 생각하여 해당 에러에 대한 생각과 해결방법을 알려드리기 위해 이렇게 글을 쓰게 되었습니다. 에러 발생 원인저는 Ksp를 사용하고 있습니다. 정확히 어느 시점에 해당 에러가 발생한 지 정확한 원인은 찾기 어려웠습니다. 다만 추측은 가능했습니다.@Database( version = 1, entities = [WorkPlaceEntity::class], exportSchema = false,// autoMigrations = [AutoMigration(from = 1, to = 2)])@TypeConverters(WorkPlaceConverters::clas..
![[안드로이드] Firebase 에러 ERROR_INVALID_CREDENTIAL 해결법](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKK8xt%2FbtsLj2FDMRR%2FkcqbHtaxfSz7ikKLubbt4K%2Fimg.png)
오랜만에 인사드립니다. 주코입니다!요즘은 Naver에서 개최한 Dan24 행사를 참여한 후 여러 가지 인사이트를 얻고 계속해서 MultiModule과 Compose를 중심으로 학습하고 있었습니다!최근 Firebase로 이메일과 비밀번호로 로그인을 구현하고 있었습니다.저는 FirebaseAuth에 대한 모든 에러핸들링에 대해 사용자에게 SnackBar로 로그인 실패에 대한 이유를 보여주고 싶었습니다.일부로 Firebase Authentication에 없는 계정으로 로그인을 시도해도, 비밀번호를 틀려도 계속 ERROR_INVALID_CREDENTIAL라고 에러가 뜨는 것이었습니다. 에러 발생 화면테스트용 이메일과 비밀번호는 test@naver.com / 12341234 이였습니다. 이렇게 설정을 하고 일부로..
![[안드로이드] Foreground Service에서 Notification이 뜨지 않는 문제 (Feat. FastCampus)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsnqQN%2FbtsIUSyLIDg%2FFFi9ZwXuk5bfWL2Ydxvvg1%2Fimg.png)
최근 스파르타코딩 부트캠프가 끝나고 cs공부와 알고리즘, 그리고 FastCampus 강의를 들으면서 학습을 이어 가고 있었는데요. FastCampus의 강의 중 part1 - chaper9를 수강하다가 Android 버전에 따른 문제가 발생하였습니다.이 강의는 Android 12를 타깃하고 있어 Media Player와 Notification의 설정을 Android 버전에 따라 추가 작업을 해줘야 하는 것이 있어, 혹시나 해당 강의를 듣고 있는 분들께 도움을 드리고자 글을 쓰게 되었습니다! 해당 강의를 들으면서 코드를 따라 쳐본다면 java.lang.SecurityException: Permission Denial: startForeground from pid=12550, uid=10191 require..
![[안드로이드] Extended Controls의 location 흰색화면](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtW0FE%2FbtsIz7ibfxG%2FKYcrINENDuCvAvrkuoiWw1%2Fimg.png)
안녕하세요 주코딩입니다. 오늘은 팀 프로젝트 중 지도 API를 테스트하기 위해 Extended Controls의 Location을 이용하려던 중에 흰색화면만 보이는 문제가 발생하였습니다.문제 상황 Extended Controls 패널을 보면 이렇게 Location을 설정하고 Route를 play 할 수 있는 기능을 지원합니다.팀 프로젝트 중 지도 API를 테스트 하기위해 동작을 시켰지만 위처럼 위치정보는 뜨지 않고 계속 흰 화면만 뜨는 것이었습니다. 당연히 안드로이드 스튜디오와 애뮬레이터 재부팅은 해봤고 애뮬레이터를 삭제했다 다시 깔아도 이런 현상이 반복되는 것이었습니다.혹시나 하는 마음에 안드로이드 스튜디오 버전을 올려봐도 모두 실패했습니다. ( 34 버전 ) 한국어로 된 문서들에선 정보를 찾아볼 수 ..
![[안드로이드] MVVM 패턴이란?](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboukeS%2FbtsIAdvSTUA%2FWw8dHLSB0yFKrhY0AR3UZ0%2Fimg.png)
안녕하세요 이번 포스팅에서는 Presentation Model Design Pattern인 MVVM 패턴에 대해 알아보려고 합니다. MVVM 패턴이란?Model, View, ViewModel의 약자로 비즈니스 로직과 프레젠테이션 로직을 명확하게 분리하는 패턴입니다. MVVM은 Microsoft의 WPF(Window Presentation Foundation) 프레임워크에서 유래한 디자인 패턴으로 UI 관련 문제를 처리하는데 효과적이기 때문에 Android개발에서 인기를 얻은 디자인패턴입니다. MVVM은 기존 MVC(Model-View-Controller) 패턴을 기반으로 현대 UI 요구 사항에 맞게 등장하게 되면서 View와 Model 사이의 의존성뿐만 아니라 View와 Controller 사이의 의존성..
![[안드로이드] 4대 컴포넌트](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkW75m%2FbtsHS9mLnn1%2FMoKZxN4k2AzNxM7BnRcuZ0%2Fimg.png)
안드로이드 앱을 구성하는데 가장 중요하고 필요한 4개의 요소이며 각 컴포넌트는 독립적으로 존재하며 고유의 기능을 수행한다는 특징이 있습니다.또한 각 컴포넌트는 인텐트를 통해서 서로 상호작용을 합니다. 액티비티 (Activity)사용자와 상호작용을 담당하는 인터페이스앱을 실행 할때 전체를 호출하는것이 아닌 앱의 액티비티를 호출합니다.2개이상의 액티비티를 동시에 Display할 수 없습니다.액티비티 내에 프래그먼트(Fragment)를 추가하여 화면을 분할시킬 수 있습니다.1개 이상의 View(텍스트, 버튼, 이미지) 또는 ViewGroup(레이아웃)이 있어야합니다.반드시 Application에는 하나 이상의 액티비티가 있어야 합니다.서비스 (Service)액티비티와 반대로 사용자와 직접적으로 상호작용을 하지..
![[안드로이드/viewBinding] 뷰바인딩은 무엇이고 어떻게 사용할까?](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm0FfT%2FbtsHy92WcIF%2F92THCYA6Q2L48NS3QOKF5k%2Fimg.png)
ViewBinding 이란?viewBinding이란 Android JetPack의 구성요소 중 하나이며 뷰와 상호작용하는 코드를 더 쉽게 작성할 수 있게 해주는 기능입니다.대부분의 경우 viewBinding은 findViewById를 대체 할 수 있습니다. ViewBinding 종속성 추가viewBinding을 사용하기 위해 Gradle에 추가 해줘야합니다.Gradle Scripts -> build.gradle.kts (Module:app) buildFeatures { viewBinding = true } 위 코드를 적으셨으면위 와같이 Sync Now를 하라고 메시지가 위에 뜰 겁니다. 그럼 바로 Sync now!Activity에서 ViewBinding 사용법class MainAc..