compose 16

[Android] Compose에서 BindService 사용하기

https://developer.android.com/develop/background-work/services/bound-services 바인딩된 서비스 개요  |  Background work  |  Android Developers이 페이지는 Cloud Translation API를 통해 번역되었습니다. 바인딩된 서비스 개요 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 바인드된 서비스란 클라이언트-developer.android.com가끔씩 앱이 실행중이지 않을 때 앱이 백그라운드에서 무언가 작업이 실행되어야 하는 경우가 있습니다.예를 들면 만보기, 파일 업로드/다운로드, 음악 플레이어 등과 같은 것들이 있습니다.이런 것들은 보통 서비스를 활용해서 구현하게 됩니다...

개발/Android 2025.03.20

[Compose Multiplatform] CMP 프로젝트와 SPM(Swift Package Manager)을 함께 사용하기 (카카오, 네이버 로그인을 곁들인)

모바일 앱을 개발할 때 로그인 기능은 거의 필수로 구현해야할 기능 중 하나입니다.로그인의 거부감을 없애고 사용자에게 편리함, 친숙함을 제공하기 위해 구글, 카카오, 네이버, 애플 등과 같은 OAuth 기반의 소셜 로그인은 가장 자주 활용되는 로그인 수단 중 하나입니다.최근 CMP로 사이드 프로젝트를 진행하던 중, 이러한 소셜 로그인이 필요하게 되었습니다.하지만 소셜 로그인들은 KMP 프로젝트를 위한 SDK를 제공하지 않고 Android, iOS와 같은 각 플랫폼의 고유한 SDK를 제공하고 있습니다.따라서 CMP 프로젝트에서 소셜 로그인을 구현하기 위해서는 Android, iOS 네이티브 영역의 SDK에서 그 기능을 구현하고 공통 코드 영역에서 이러한 기능을 사용할 수 있어야 합니다.KMP 프로젝트는 Co..

개발/Android 2025.02.23

[Android] Compose 성능 개선 - Compose Compiler Metrics Report와 Restartable, Skippable

안드로이드 개발을 하시는 분이라면 Compose로 개발을 하고 계시거나 개발할 계획이 있을 것입니다.Compose는 안드로이드 앱에서 UI를 만들기 위해 사용하는 도구이기 때문에, 사용자에게 안정적이고 빠른 화면을 보여주기 위해 성능을 고려해야 합니다.이를 위해선 Compose가 어떻게 동작하는지에 대한 이해, 그리고 그 이해를 바탕으로 효과적으로 동작할 수 있도록 코드를 작성하는 것이 중요할 것입니다.하지만 나름대로 이해도 해보고 잘 작성했다고 하더라도 실제로 잘 한게 맞는지를 확인하기 위해선 어떤 지표를 확인하는게 좋겠죠.이 포스팅에선 지표를 확인하고 이해해보는 것을 다루겠습니다. Compose Compiler Metrics ReportUI를 효율적으로 작성한다는 것은 그려내는 시간을 단축하는 것도 ..

개발/Android 2025.02.17

[Android] 의존성 주입 - Starting with Koin Annotations (feat. Compose, KMP, Circuit)

최근 Compose Multiplatform을 활용하여 사이드 프로젝트를 진행중입니다.Android, iOS, Flutter를 전부 실무에서 활용해본 경험으로 미루어 봤을때 꽤 좋은 선택지가 될 것이라는 기대 덕분인데요.좋은 아키텍처가 무엇인지 고민하던 찰나, Slack에서 개발한 Circuit 아키텍처가 마음에 들어 사용해보고 있습니다.현재 구글이 KMP를 적극 지원중이고 여러 Jetpack 라이브러리들이 KMP를 지원하도록 업데이트 되고 있으니 가까운 미래에 바뀔지도 모르지만요.아키텍처를 구성한다는 것은 의존성 주입 또한 중요한 문제가 될 텐데요.안드로이드 개발자라면 Jetpack Hilt를 사용하고 있을테지만 안타깝게도 KMP에서는 사용이 어렵습니다.그래서 코틀린으로 작성된 Koin이 좋은 대안이 ..

개발/Android 2025.02.14

[Android] Jetpack Compose - Layout으로 커스텀 레이아웃 만들기

프로젝트 진행 중에 커스텀 레이아웃이 필요했습니다.스크롤이 가능한 Column에서 staggered layout이 필요했는데, LazyVerticalStaggeredGrid을 사용하기엔 중첩 스크롤 문제가 발생했기 때문입니다.그래서 이러한 상황에서 사용 가능한 staggered layout을 구현하기로 했습니다.이를 위해 커스텀 레이아웃을 구현하기 위해 기본적으로 이해가 필요한 부분이 있었기 때문에 이에 대해 포스팅합니다. LayoutCompose에서 기본적으로 제공하고 있는 Scaffold, Surface, Column, Row 등은 Layout를 기본적으로 사용하여 구현되어 있습니다.다음은 하나의 예로, Column 컴포저블 함수의 코드입니다.@Composableinline fun Column( ..

개발/Android 2025.02.02

[Android] Compose Multiplatform + Circuit + Koin

요즘 Compose Multiplatform에 대한 관심도가 많이 높아진 것 같습니다.Jetpack ViewModel은 기존에 Android에서만 사용이 가능했는데, 최근 KMP에서도 사용 가능하도록 업데이트를 하기도 했습니다.이 외에 Navigation Component, Room 등도 이러한 양상을 보이고, 많은 라이브러리들이 KMP 환경을 제공하기 위해 노력하고 있는 듯 합니다.https://www.jetbrains.com/ko-kr/compose-multiplatform/ Compose Multiplatform UI 프레임워크 | JetBrains www.jetbrains.com 저 또한 CMP에 관심을 가지고 있는데, 지금까지 잘 사용을 하지 않은 이유는 적합한 아키텍처 또는 아키텍처 구성요소를..

개발/Android 2025.01.12

[Android] Jetpack Compose - UI Test. 요약본 리뷰

요즘 채용공고를 보면 자격요건 또는 우대요건에 Unit Test, UI Test와 같은 요구사항이 자주 등장합니다.제가 속해있던 회사들에선 주로 Unit Test를 필수로 작성하였습니다. 그리고 Jenkins와 같은 툴을 통해 자동화된 테스트를 수행하여 제품의 안정성과 품질을 유지 또는 향상시키기 위해 노력했습니다.그러나 UI Test의 경우 리소스와 같은 현실적인 요건, 그리고 QA를 통한 검증 등을 핑계로 작성되지 않는 경우가 잦았습니다.지난 과거를 반성도 해볼 겸, Compose에서 UI Test를 작성하는 방법에 대해 리뷰해보고자 합니다.https://developer.android.com/develop/ui/compose/testing/testing-cheatsheet 테스트 요약본  |  Je..

개발/Android 2024.12.09

[Android] Circuit + Compose로 Pokedex를 구현해보자. (feat. MVI)

Jetpack Compose의 버전이 올라가면서 필수 기술스택이 되어가고 있습니다.그러면서 Compose를 활용하기 좋은 아키텍처에 대한 관심도도 자연스럽게 증가하고 있으며,그러한 아키텍처로 MVI가 자리잡고 있는 듯 합니다.저 또한 프로젝트에서 Compose를 최대한 활용하려 하며,Compose를 사용하지 않더라도 Compose와의 마이그레이션을 고려하여 MVI를 주요 아키텍처로 사용하고 있습니다.이러한 덕분에 MVI 아키텍처를 위한 다양한 라이브러리들에 대한 관심도 매우 높아지고 있는데,주로 언급되는 라이브러리는 orbit-mvi, mavericks 정도가 있고, 최근 주목받기 시작한 circuit이 있습니다.Circuit?Circuit은 Slack에서 만든 프레임워크로, 실제 슬랙의 프로덕션에서 사..

개발/Android 2024.12.01

[Android/안드로이드] Jetpack Compose - Stability와 Recomposition 그리고 최적화

Jetpack Compose가 정식으로 출시된 이후, 많은 개발자들이 관심을 갖고 사용하고 있습니다.또한 Jetpack Compose 역시도 많은 업데이트가 있었고, 앞으로도 그럴 것이라 예상이 됩니다.다양한 사용 사례가 나타나면서 선언형 UI 프로그래밍 방식은 익숙해지거나, 익숙해지기 쉬운 환경들이 만들어졌다고 생각합니다.우리는 이제 "효율적으로" Compose를 사용하는 방법을 알아가고 익힐 필요가 있습니다.Jetpack Compose를 어떻게 효율적으로 사용할 수 있을까요?UI의 입장에서 "효율적이다" 를 생각해보면 의외로 답은 간단할 수 있습니다.우리가 XML 방식으로 UI를 구현할 때, 어떻게 효율적인 코드를 작성하는지 생각해봅시다.여러가지가 떠오를 수 있는데, 저는 "불필요한 UI 업데이트가 ..

개발/Android 2024.06.27

Kotlin Multiplatform의 안정화와 Jetpack Compose

현재 안드로이드 개발자에게 큰 관심거리는 무엇이 있을까요? 굉장히 많은 것들이 있겠지만, 개인적으로 Jetpack Compose가 가장 큰 관심거리가 아닐까 합니다. 여기에 더해서 Flutter, Kotlin Multiplatform의 동향도 큰 관심거리입니다. Flutter는 많은 발전을 하고 있고, 채용공고도 꽤 많아졌을 만큼 모바일 개발에서 핫한 프레임워크가 되고 있습니다. 물론 현업에서 쓰기에는 아직도 이슈가 좀 있어 보이지만, 그래도 꽤 큰 IT회사에서 채택하는 경우도 점점 늘고 있습니다. 이런 상황에서 Kotlin Multiplatform도 점점 발전하면서 사람들의 관심을 끌고 있는데요. 안타깝게도 프로덕션 레벨에서 쓰기에는 안정적이지 않았습니다. 저도 간단한 예제를 통해 어떤 것인지 학습정..

개발/Android 2023.11.04
반응형