Android/Kotlin21 [Compose] Renderer Issue? Missing classes? in release mode 얼마전에 앱을 배포한 후 UI 관련 업데이트 내용이 있어 Preview 를 띄어놓고 수정 작업을 하는데디자인 창에 계속 Renderer Issue 라고 적혀있고 Compose 의 에러 내역엔 단순히 Missing classes 라는 말과 함께프로젝트를 Rebuild 하라고만 나와있었습니다. 처음에는 Keystore 파일 관련 이슈로 자바 관련 시스템 환경 변수를 만진게 화근인가 싶었는데 ADB 로 실 기기에 Release 모드로 빌드(Signing 이 된 Build) 하여 테스트 중이어서 발생된 문제였습니다. Build Variant 를 release 로 놓고 우측 상단에서 앱을 실행하면 signing Key 가 포함된 release 버전의 앱을 실행할 수 있는데 이 부분이 Release 로 되어있으면.. 2024. 9. 3. Android 에서 Google 소셜 로그인을 구현해보자 모바일 앱들을 보면 구글로 로그인!(혹은 카카오 / 네이버 등등) 과 같은 소셜 로그인을 지원하는 경우가 많은데오늘은 이 중 구글 로그인을 구현해볼겁니다. 일단 Firebase 에서 프로젝트를 만들고(로그인 기능을 넣을것이기 때문에 SHA -1 인증서가 필요합니다)앱과 프로젝트를 연동해줍니다. 그 후 google-services.json 을 app 수준의 디렉토리에 넣어주면 됩니다. 이제 종속성을 추가해줍시다.Project Level 의 build.gradle 에 아래 구문을 작성하고id("com.google.gms.google-services") version "4.4.1" apply false App Level 의 build.gradle 에 gms 를 추가해줍니다.//libs.versions.toml.. 2024. 6. 11. Jetpack Compose 에서 기존 View 를 사용하고자 한다면! Compose 는 분명 개발에 있어 편리한건 사실이지만 아직 Composable 로써 넘어오지 않은 UI 요소들도 분명 존재합니다.이런 부분들은 Compose 에서는 AndroidView 를 활용하여 사용할 수 있습니다.(기존의 XML View 와도 혼용해서 사용할 수 있는 이유입니다.)기본적인 틀은 다음과 같습니다.@Composable@UiComposablefun AndroidView( factory: (Context) -> T, modifier: Modifier = Modifier, update: (T) -> Unit = NoOpUpdate) { AndroidView( factory = factory, modifier = modifier, .. 2024. 5. 27. LiveData 의 postValue() vs setValue() 의 차이점, 언제 사용해야 할까? 프로젝트를 MVVM 형태로 구현하다 보면 ViewModel 에서 LiveData 를 쓰는 경우가 많습니다. 보통 private 로 선언된 MutableLiveData 의 value 를 변경하고 public 으로 선언된 LiveData 의 값을 관측하는 식으로 사용합니다. 그런데 이 과정에서 Coroutine 을 사용하다 보면 아래 상황에서 오류가 발생합니다. DB 작업을 하는 백그라운드 스레드에서 setValue 를 호출 그리고 이러한 오류를 마주치게 되죠 java.lang.IllegalStateException: Cannot invoke setValue on a background thread setValue 메서드는 백그라운드에서 호출할 수 없다고 합니다. 그래서 백그라운드에서는? postValue .. 2024. 3. 29. 이전 1 2 3 4 ··· 6 다음