전체 글
-
Moshi vs KotlinX SerializationAndroid 2025. 7. 12. 00:05
안드로이드 개발에서 JSON 직렬화/역직렬화 라이브러리 선택 어떻게 하고 계시나요?JSON 데이터를 앱에서 사용할 수 있는 객체로 변환하는 것이 직렬화,반대로 객체를 JSON으로 변환하는 과정이 역직렬화입니다과거 Gson이 널리 사용되었지만, 코틀린의 null-safety를 제대로 지원하지 않고 default value를 무시하는 등의 문제로 인해현재는 Moshi와 KotlinX Serialization이 양강 구도를 형성하고 있습니다이번 글에서는 두 라이브러리의 특징을 심도 있게 비교하고, 어떤 상황에서 어떤 라이브러리를 선택해야 하는지 살펴보겠습니다.라이브러리 버전 및 업데이트 동향 MoshiKotlinX Serialization최신 버전1.15.21.9.0마지막 업데이트2024년 12월 5일2025..
-
안드로이드 미래 먹거리 XRAndroid 2025. 7. 11. 15:58
안녕하세요. Mash-Up Android 15기 유호현입니다. 지난 5월 개최된 2025 Google I/O에서 Android XR 글래스가 공개 되었는데요, Google I/O의 XR 글래스 데모에서는 제미나이가 탑재된 XR 글래스와 소통하며 친구에게 메시지를 보내고, 일정 안내를 요청하는 등, 마치 아이언맨 영화 속 자비스가 현실이 되는 순간을 보여주었습니다.2025 Google I/O 발표 외에도 XR에 대한 기술적 흐름의 신호가 몇 가지 존재했는데, 지난 해 12월 삼성과 퀄컴이 연합하여 만든 Android XR 기기 ‘프로젝트 무한'을 발표하였고, 안드로이드 스튜디오 Narwhal 버전에서는 기본적으로 XR 에뮬레이터가 탑재되어, 안드로이드 XR 개발을 지원하기 시작했습니다.이러한 변화의 흐름 ..
-
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( ..
-
나만 몰랐었던 NothingKotlin 2025. 4. 30. 16:00
안녕하세요! Mash-Up Android 플랫폼에서 활동 중인 조재훈입니다. 오늘은 Kotlin의 특별한 타입인 Nothing에 대해 알아보려고 합니다. 본격적으로 Nothing을 살펴보기 전에, Any와 Unit부터 간단히 짚고 넘어가겠습니다. 코틀린 최상위 타입 : AnyKotlin에서 Any는 Java의 Object에 해당하는 최상위 타입입니다. 하지만 중요한 차이점이 있습니다. Java에서는 int, float 같은 원시 타입(primitive type)은 Object 계층에 포함되지 않지만, Kotlin에서는 Int, Float 같은 원시 타입도 모두 Any를 상위 타입으로 가집니다. Kotlin 코드를 바이트코드로 컴파일하면, Any는 Java의 Object와 일치합니다. Java 메서드에서..
-
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 ..
-
퍼사드 패턴에 대한 고찰기타 2025. 4. 5. 00:46
안녕하세요, Mash-Up 안드로이드 팀 멤버 이창환입니다.🐗객체지향에 관심이 많은 개발자로써 객체지향의 꽃이라 부를수 있는 디자인 패턴들 중 아주 간단하지만 위력적일 수 있는 퍼사드 패턴에대해 알아보는 시간을 가지려 합니다.디자인 패턴이란?프로그램 개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나로, 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재이용하기 좋은 형태로 특정의 규약을 묶어서 정리한 것이다.출처: wikipidia 쉽게 말하자면 선배개발자가 남겨놓은 게임공략집 이라고 생각하시면 됩니다.우리는 프로그램을 개발하며 많은 문제들에 빠지게 됩니다. 이러한 부분들은 우리의 천재적인 선배 개발자 또한 마찬가지였을테고 그분들이 오랜시간의 경험과 고민을..
-
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 는 어떤 원리로 생명주기에 맞춰 코루틴을 취소하..