본문 바로가기

Android

(139)
[Android] Compose에서 런타임 언어 변경 구현하기 - 앱 재시작 없이 실시간 적용 안드로이드 앱을 개발하다 보면 사용자가 앱 내에서 언어를 변경할 수 있는 기능이 필요한 경우가 있다. 특히 글로벌 서비스라면 필수적인 기능이기도 하다.하지만 단순히 시스템 언어를 변경하는 것이 아니라, 앱 내에서 독립적으로 언어를 변경하고 즉시 적용되어야 하는 경우에는 몇 가지 구현 방법을 고려해야 한다. 이번 글에서는 Jetpack Compose 환경에서 런타임 언어 변경을 구현하는 방법을 간단하게 구현해 보았다.우선,기본적으로 앱을 실행시킨 다음, 디바이스의 언어를 변경 후 앱을 재 접근하게 되면 앱이 재 실행되면서 새로운 언어 리소스를 참조하여 보이게 된다. 필자는 이런 것이 아닌, 디바이스의 언어를 건들지 않고 앱 자체의 언어만을 변경하고 싶었다.따라서, 이런 방식을 어떻게 구현하면 좋을까 생각..
[Android] Compose 환경에서 데이터 init 방식에 대한 고찰. 최근 안드로이드 뉴스레터, 그리고 개발자 카톡방 등에서 초기 데이터 init 방식에 대한 글을 종종 봤다.필자는 샘플에는 init 되는 타이밍이 한정적이고 예제이기 때문에 정말 가장 간단한 방식으로 설정하긴 했지만, 실무를 진행할 때는 2가지 방법을 나눠서 사용한 경험이 있다. 하지만, 위의 내용을 보고 확인을 하다 보니 안드로이드 쪽에서 유명한 Skydoves님의 글을 보고 새로운 init 방식에 대해 알게 되었다.본 글에는 기존에 사용하던 방식과 더불어, 새롭게 Skydoves님의 방식을 작성해 보면서 그 장단점을 생각해보고자 한다.우선,필자가 사용했던 2가지 방식에 대해 설명하고자 한다. 첫 번째 방식은 LaunchedEffect를 사용하여 데이터를 초기화 하는 방식이다.LaunchedEffect(..
[Cursor] Cursor IDE 0.50, 0.49 업데이트에 대해 알아보자. Cursor IDE를 사용하다 보면, 좌측 하단에 작은 창으로 update를 할 거냐고 물어보는 경우가 생각보다 자주 발생한다.하지만 창이 작아서 일까? 필자는 업데이트를 봐도 바로 최신 버전으로 업데이트를 하지 않고 사용하다가 가끔씩 업데이트를 진행하곤 했다. 그리고 개발자 동료로부터 최신 업데이트에 이것저것 쓸만한 것들이 많이 추가되었다고 전해 듣고 업데이트를 해보니 생각보다 추가된 것들이 많은 것을 볼 수 있었다. 이번 글에서는 최근에 업데이트 되었고, 0.50 버전과 0.49 버전에서 변경된 사항들 중에서, 필자가 생각하기에 알아두면 좋은 것들에 대해서 정리하여 작성해 보도록 하겠다. 하지만,Cursor 공식 홈페이지에 게시된 업데이트 내역을 보는 것이 가장 좋기 때문에 제대로 모든 내용을 확인하..
[Git] .gitIgnore 재 적용하기. 필자는 샘플 코드를 작성하면서, 여러 번 github에서 repository를 생성했었다.하지만 최근 새로운 Repo를 생성하면서 .gitIgnore를 적용하려고 하니, 분명히 파일을 넣었는데 정상적으로 ignore처리가 안되고 있었다. Repository를 생성하고 한번 해당 파일을 설정하고 난 후 별 다른 이슈가 없다면 건들지 않는 성격의 파일이기 때문에,다시 설정하려고 하면 매번 방법을 까먹어서 찾아보고 작업을 수행하게 되었다. 이 과정이 생각보다 귀찮기도 하고 매번 명령어를 찾아보기도 귀찮아서 간략하게 정리해두려고 한다. 필자는 Mac으로 작업했기 때문에 Mac기준의 작업 과정만 기입하도록 하겠다. 우선,.gitignore 파일부터 생성해 보도록 하자. . gitignore 파일을 생성하여 적용하..
[Cursor] Cursor IDE를 사용한 Android 개발 - md파일 사용. 2024.11.10 - [Android/AI] - [Cursor] Cursor AI IDE를 사용한 Android 개발 - rules 사용. 이전 글에서는, rules 설정을 활용하여 보다 더 퀄리티가 높은 코드를 구현하는데 도움을 받았다. rules 파일을 작성하면 코드의 퀄리티는 확실히 높아진다는 것은 확인하였는데, 우리가 실무에서 cursor를 사용하면서 보다 효율적인 개발을 하기 위해서는 이것만 사용하기에는 상당히 부족하다는 것을 느낀다. 이왕 "AI"라는 것을 사용한다면, 보다 효율적으로 지금 내가 개발하는, 혹은 현재 팀이 개발하고 있는 개발 스타일에 맞춰서 알아서 코드를 구현해 준다면 우리가 후처리 작업으로 변경해야 하는 코드가 줄어들 것이 아닌가?  필자는 이런 생각을 하고, 별도의 doc..
[Android] Android 15 (SDK 35) 버전 대응하기 - Compose UI Android 15 버전인 SDK 35 버전은 아직 베타버전이지만, 개발자 톡방을 보면 종종 SDK 35를 대응했다. 대응하는데 어떻게 해야 하냐라는 식의 내용을 종종 확인할 수 있었다. 이 사람들 정말 빠르게 버전을 대응하는구나. 라고 생각을 하면서도, 나도 알고 있어야 하는 내용이다 싶어서 시간이 될 때 하나씩 대응을 해보려고 한다. 이번 게시글에서는 안드로이드 개발자 페이지의 내용을 전반적으로 살펴보고,그 중, 필자가 적용한 UI에 관련된 부분을 조금 더 디테일하게 확인해보고자 한다.처음으로,모든 앱의 변경사항 문서에 가서 확인해 보자.모든 앱에 관련하여 수정된 기능을 보는데, 딱히 실제로 컨트롤해야 하는 부분은 많이 보이지 않고, minSDK version에 관련한 내용이 눈에 들어왔다.Andro..
[Android] Text Shimmer UI 구현하기 2024.09.29 - [Android/Jetpack Compose] - [Android] Shimmer UI 구현하기지난번 Shimmer UI를 구현한 이후, 이번에는 Text 자체의 Shimmer를 적용해야 하는 경우가 생겼다.의외로 간단하게 구현이 가능하지만, 필자가 적용하기 위해 적용했던 단계를 작성해보고, Text에 shimmer를 적용하는 방법에 대해 알아보도록 하겠다.기존에 사용했던 shimmer util은 위에 언급한 글을 보면 알 수 있겠지만, 다음과 같다.fun Modifier.shimmer( colorList: List = listOf( Color.LightGray.copy(alpha = 0.2f), Color.LightGray.copy(alpha = 0..
[Android] SSE를 사용하여 실시간 통신하는 방법. 회사에서 업무를 진행하다, SSE를 사용하여 통신을 해야 하는 케이스가 추가되었다. Websocket를 통해서 실시간 통신을 구현해 본 경험은 있지만,SSE를 사용해 본 경험은 없었기 때문에 이를 적용하기 위한 과정과 적용하는 간단한 샘플 코드를 작성해보고자 한다.우선,SSE란 무엇인가부터 알아보자. SSE란,Server-Sent Events의 약자로서버에서 클라이언트로 단방향 실시간 데이터를 전송하는 웹 기술이다. 즉,서버에서 클라이언트로 일방통행 통로를 하나 뚫어주고, 그 통로를 통해서 계속해서 데이터를 전달할 수 있다는 것이다. 필자가 맨 처음, WebSocket은 구현해 봤지만 SSE는 처음이다.라고 말한 이유는WebSocket도 실시간 데이터를 전송하는 기술이지만, 이는 양방향 통신이 가능한 기..