Android
-
Modifier composed{} 이대로 괜찮은가Android 2025. 4. 30. 16:36
.안녕하세요! 매시업 13 기부터 활동하고 있는 안드로이드 팀 서정우 라고 합니다. 오늘은 Modifier composed에 대해 살펴 보도록하겠습니다.저는 보통 Modifier를 커스텀하게 만들때 Modifier 확장함수로 선언하여 사용하고는 했습니다.예를 들면 clickable 같은 경우 Modifier.composed{….}을 하여 많이 사용하고는 했는데요. 구글 공식 홈페이지에서는 composed{} 를 권장하지 않는다고 나와 있어서 그 이유가 궁금하고 내부는 어떻게 되어있을지 한 번 살펴보겠습니다.composed로 체이닝할때 일어나는 일fun Modifier.rippleClick(): Modifier { return this.composed { clickable( ..
-
Jetpack Compose에서 Custom Layout 구현해보기Android 2025. 4. 29. 13:30
안녕하세요! Mash-Up 15기 Android팀 멤버 백다연입니다.최근 기본 컴포즈 라이브러리에서 제공하는 컴포넌트만으로는 구현의 한계가 있는 UI를 개발하게 되었고 어떻게 개발하면 좋을지 고민하다가 Custom Layout을 만들게 되었습니다.이 글에서는 Jetpack Compose에서 Custom Layout을 만들기 위해 어떤 걸 사용하고 만들어야 할지 알아보고자 합니다. 기본 레이아웃 컴포저블로 많이 사용하는 Row와 Column 내부를 살펴보면,@Composableinline fun Column( modifier: Modifier = Modifier, verticalArrangement: Arrangement.Vertical = Arrangement.Top, horizonta..
-
navigateUp과 popBackStack 비교 (뒤로가기 클릭 금지)Android 2025. 4. 5. 15:00
안녕하세요! Mash-Up 15기로 활동하고 있는 이재성입니다. 화면 간 전환을 하실때 Jetpack Navigation을 정말 많이 사용하고 있으실텐데요. 이 글에서는 Navigation에서 제공하는 뒤로가기 API인 navigateUp과 popBackStack에 대한 올바른 사용법과 함께 내부 구현을 비교합니다. 개발자 문서에서 설명하고 있는 navigateUp과 popBackStack개발자 문서에서는 아래처럼 설명하고 있습니다.Popping top destination: Tapping Up or Back calls the NavController.navigateUp() and NavController.popBackStack() methods, respectively. They pop the top ..
-
lifecycleScope 와 viewModelScope 는 어떤 원리로 생명주기에 맞춰 코루틴을 취소하고 있을까?Android 2025. 4. 5. 00:00
안녕하세요. Mash-Up 15기 Android 팀으로 활동하고 있는 전계원입니다.Android 에서는 Activity / Fragment / ViewModel 에서 Coroutine 을 생명주기에 맞게 사용하기 위해, lifecycleScope.launch { } 혹은 viewModelScope.launch { } 를 활용하고 있습니다. 그런데 lifecycleScope 와 viewModelScope 는 어떤 원리로 생명주기에 맞춰 코루틴을 취소하고 있을까요? 생명주기에 맞게 Coroutine 을 관리하는 원리가 궁금하였고, 본 포스팅을 통해 이러한 것들이 어떻게 가능했던 것인지 분석한 내용을 공유드리고자 합니다. 1. lifecycleScope 는 어떤 원리로 생명주기에 맞춰 코루틴을 취소하..
-
Jetpack Datastore 이해하기Android 2024. 5. 22. 22:41
안녕하세요. Mash-Up 14기 Android 팀으로 활동하고 있는 전계원입니다.Android 에는 앱 내 저장소에 정보를 key-value 기반으로 저장하기 위해 SharedPreferences 가 존재합니다.하지만 요즘은 SharedPreferences 대신 Datastore 을 많이 사용하고 있습니다. 그런데 여러분들은 SharedPreferences 대신 Datastore 를 사용하는 이유는 무엇인가요? Async API 제공? Type Safety? Runtime Exception 방지? 그럼 Datastore 는 어떻게 이러한 장점들을 누릴 수 있는 걸까요? Datastore 관련하여 이와 같은 궁금증이 생겼고, 이를 위해 Datastore 에 대해 공부했던 내용을 이번 포스팅을 ..
-
Fastlane으로 Android앱 자동 배포해보기 (feat. Firebase App Distribution)Android 2024. 4. 20. 01:03
안녕하세요! Mash-Up 안드로이드팀 멤버 백다연입니다.😀 우리는 출시할 버전을 열심히 개발하고 배포 전 QA과정을 거치기 위해 QA팀이나 디자인팀에게 앱을 배포하는 과정을 거치곤 합니다. 언제 다될지 모르는 빌드 시간을 한참~지켜보며 기다린 후에 메신저로 "배포되었습니다"라는 말을 전달해야 합니다. 이러한 과정을 자동화한다면 어떨까요?! 아마 빌드 시간을 기다리지 않고 다른 일에 집중할 수 있을 것 같습니다!! 앱 배포 자동화툴은 여러 종류가 있지만 FastLane이라는 오픈소스에 대해 알아보려고 합니다. Fastlane FastLane은 Android, iOS등 애플리케이션 배포를 자동으로 도와주는 오픈 소스이며, 명령어를 통해 쉽게 앱을 배포하고 Slack과 연동이 가능하여 앞서 설명한 과정들을 ..
-
MVVM과 MVI 디자인 패턴 차이점 알아보기Android 2023. 3. 23. 11:51
안녕하세요, 매시업 13기 안드로이드 기수로 활동 중인 지성빈입니다. 요즘 Jetpack Compose라는 선언형 UI 툴킷이 인기를 얻고 있고, Jetpack Compose는 Unidirectional Data Flow로 상태 관리가 권장되기에 이를 사용하는 디자인 패턴인 MVI를 공부하신 분을 주변에서 흔히 볼 수 있습니다. 이번 글에선 기존에 안드로이드에서 흔히 쓰이던 MVVM과 최근들어 뜨고 있는 MVI 디자인 패턴의 차이점을 알아보겠습니다. Unidirectional Data Flow UDA는 데이터가 애플리케이션의 한 방향으로만 흐르는 소프트웨어 아키텍처 패턴입니다. 데이터가 한 방향으로만 흐르기에 one-way binding라고도 합니다. UDA에서 데이터는 일반적으로 "저장소 (store)..
-
Android EventBusAndroid 2023. 3. 7. 00:07
Event Bus 안녕하세요 Mash-Up 안드로이드 10기 양민욱입니다 :) Activity, Fragment, 혹은 Service 간의 데이터 송수신. 여러분들은 어떤 방식을 사용하고 있으신가요? intent, bundle부터 Receiver, ViewModel까지 다양한 방법들이 머릿속에 떠오르실 거라 생각이 드는데요. 제가 오늘 소개해드릴 EventBus 라이브러리는 역시 Android 내에서 데이터를 공유하는 방법의 하나입니다. 저도 입사 전에는 전혀 모르고 있던 라이브러리인데요. 회사 내에서 여러 프로젝트를 개발할 때 EventBus 라이브러리 덕분에 쉽고 빠르게 개발을 완료할 수 있었던 좋은 기억들이 많아서 오늘 간단한 사용 방법과 현업에서 어떻게 사용하고 있는지 소개해보려고 합니다. Eve..