반응형

Android 20

Android Studio Git 에서 Staged/Unstaged 사용하기

안녕하세요. Jamie입니다. Android Studio 내장 Git들 많이 사용하시죠?근데 Android Studio (IntelliJ 계열)에서는 내장 Git이 Git CLI과 약간의 구조가 다릅니다. 저 같은경우에는 CLI에서 Git을 사용하면서 먼저 수정한 부분은 Staged에 올려놓고, Unstaged와 검증을 추가로해서 작업을 하는데, Android Studio에는 Changelist라는것으로 통합되어서 Staged/Unstaged를 알수가 없더라고요. 그래서 결국 CLI로 내려와서 확인을 해야하는 불편함이 있었는데, Android Studio Git에서도 Staged/Unstaged를 사용할 수 있다는 내용이 있어서 이번 포스팅은 그 부분을 포스팅합니다. 자, 이제 안드로이드 스튜디오에서도 ..

Development/Android 2026.04.15

Koin? 한번 알아볼까요?

안녕하세요. Jamie입니다. 안드로이드 개발에서 의존성 주입(DI)은 아키텍쳐를 구현하는데 있어 필수입니다. 기존에는 ServiceLocator를 만들어서 수동으로 주입하고, Dagger, Hilt에 이어 Koin이 현재는 주목받고 있는데요,현재 시점에서 Koin이 왜 다시 주목받는지, 그리고 Hilt와의 비교에 대해서 포스팅 해보도록 하겠습니다.Koin이란?Koin, 그리고 항상 같이 비교가 되는 Hilt는 기본적으로 DI(Dependency Injection) 라이브러리라고 합니다.근데, 사실 Koin은 "의존성 주입"이라 부르지만, 기술적으로는 DSL(Domain Specific Language) 기반의 Service Locator 패턴에 가깝습니다. 하지만 사용 방식은 DI와 동일합니다.이 둘의..

Development/Android 2026.04.01

StateFlow, SharedFlow에 대해서 쉽게 이해하기

안녕하세요. Jamie입니다. 이번 포스팅은 Flow에 대해서 쉽게 이해할 수 있도록 정리해보았습니다.Flow는 현재 Android 앱 개발에서는 Coroutine과 함께 비동기 + 스트림 처리에는 필수적으로 사용되는 스택입니다. 우선 Flow에는 크게 3대 구성요소가 있습니다.Flow의 3대 구성요소생산자 (Producer)중간 연산자(Intermediary)소비자 (Consumer) 이 요소들은 다음과 같은 특징이 있습니다.Producer (생산자): 데이터를 스트림에 흘려보냅니다.flow { ... } 블록 안에서 emit()을 통해 데이터를 전달합니다. (예: Repository 레이어의 DB 쿼리 결과)Intermediary (중개자, 중간 연산자): 흘러가는 데이터를 가공합니다.map, fi..

Development/Android 2026.03.31

Android LiveData에서 Flow로 옮겨가야하는 이유

안녕하세요. Jamie입니다. Android에서 Flow 많이 사용하시죠? LiveData 많이 사용하신다구요? 그래도 현재 포스팅기준 (2026년) ‘아직’은 사용가능한데, 결국 Flow로 옮겨오셔야할겁니다. 오늘 포스팅은 그래야하는 이유에 대해서 소개합니다. 자 일단 여러가지 이유가 있는데, 각각의 도메인과 기술스택의 선점때문에 이유는 다르실것 같습니다. 왜 LiveData를 안쓰는가? 혹은 못쓰는가?현재 2026년 기준 가장 큰 이유는 KMP (Kotlin Multiplatform)가 대세로 떠오르면서 그렇습니다. 이제 도메인이나 데이터 영역에 안드로이드에 종속되어있는 라이브러이인 Live Data 를 쓰는건 설계상 결합도를 높이는 행위로 간주합니다. KMP 자체가 안드로이드에서만을 목적으로 나온 ..

Development/Android 2026.03.31

libs.versions.toml 써보셨나요?

안녕하세요. Jamie입니다.혹시 최근에 Android Studio로 새로 프로젝트를 만드신분들중에“libs.versions.toml” 이라는 무언가가 추가된걸 알아차리셨나요? 혹은 app수준의 build.gradle을 가서 라이브러리를 추가하려고 하는데, dependencies { implementation(libs.androidx.core.ktx) implementation(libs.androidx.lifecycle.runtime.ktx) implementation(libs.androidx.activity.compose) implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.compo..

Development/Android 2026.03.22

다른앱과 통신할때 주의점 (feat. ApplicationId vs namespace)

안녕하세요. Jamie입니다. 최근에 앱 개발중 작은 삽질(?)을 한 부분이 있어, 혹시 같은 문제로 고생하시는 분들이 있을까하여 기록을 남깁니다. 제가 개발중인 앱이 외부 다른 앱의 데이터를 송수신하고, 그 앱에서 제 앱을 호출하는등 기능들이 있습니다. 문제는 다른앱에서 제 앱의 호출은 Intent를 통해 하고 있었는데, 어느날부터 외부앱에서 제 앱의 Activity가 실행되지 않는 증상을 확인합니다. 특별히 실행되는 Activity를 수정하진 않았는데, 문제가 되어 로그를 확인해보니 패키지명이 다음과 같이 찍힙니다. START u0 {act=android.intent.action.MAIN cmp=com.test.launcher/.IntroActivity} from uid 10461 cmp의 패키지명과..

Development/Android 2023.08.06

Kotlin코드를 Java코드로 변경하기 (Android Studio)

Android Native앱을 개발하기 위해서는 보통 Java와 Kotlin을 사용합니다. Java와 Kotlin은 같은 JVM 기반 언어이기 때문에 서로 호환이 100% 가능합니다. Java이나 Kotlin을 이용할때 어떻게 동작하는지 서로의 언어를 보고 비교하면 도움이 됩니다. (특히 기존에 Java를 이용해서 개발하신분들은 Kotlin을 새로 접할때) Android Studio에서 변환하는 기능을 제공해주고 있는데요. 바로 소개하겠습니다. ※ Android Studio Dolphin | 2021.3.1 Patch1 버전기준으로 작성되었습니다. Kotlin Code를 Java로 변환하기 Kotlin으로 작성된 kt 파일을 bytecode로 변환한뒤, decompile을 통해 java 파일로 변환합니다..

Development/Android 2023.03.06

Firebase Database가 안잡힐경우 (feat. 데이터베이스 위치)

안녕하세요. 오늘은 간단하게 Firebase Realtime Database가 안잡히는 경우에 대해서 삽질결과를 공유합니다. 저의 경우 개발중인 앱의 속도를 위해서 Realtime Database 생성시 데이터베이스의 위치를 가장 가까운 싱가포르(asia-southeast1) 로 지정했습니다. 이것이 코드에서 Database를 못 불러오는 이유중에 하나였는데요, Realtime Database의 위치가 us-central1이 아닌경우, Firebase를 초기화 하는 과정이 조금 다르다고 합니다. us-central1인경우 다음과 같이 코드를 작성하면 DatabaseReference를 읽을 수 있습니다. val database = Firebase.database() val databaseReference ..

Android Studio dolphin에서 파이어베이스 추가하기.

이번 포스팅은 글 작성 기준 안드로이드 스튜디오 최신버전에서 파이어베이스 추가하기를 간단하게 소개하겠습니다. 글 작성 기준일 (2022년 9월 26일)에서 안드로이드 스튜디오 최신버전은 돌핀입니다. 파이어베이스를 연동해야할 일이 있어서 Google 개발자 문서를 따라하고 있는데, Gradle 설정이 달라서 열심히 찾아보고 공유합니다. Android앱에 Firebase를 추가하게되면 다음과 같은 웹페이지를 확인할 수 있습니다. 다른 부분은 특별히 이전버전과 다르지 않아 문제 없이 진행되지만, 바로 아래의 부분이 다를 수 있습니다. 루트 수준(프로젝트 수준) Gradle 파일의 형식이 스튜디오 버전과 동기화가 안되어 있는걸 확인할 수 있습니다. 프로젝트를 새로 생성했다면, 루트 수준 안드로이드 스튜디오로 가..

Development/Android 2022.09.25

Android ListView ViewHolder Pattern + DataBinding 적용하기

안녕하세요. 오늘은 Android ListView에 VIewHolder 패턴 적용 및 DataBinding을 적용하는것에 설명하도록 하겠습니다. 최근에 기존에 개발된 자바로 된 코드를 리팩토링하는 작업을 주로 진행하고 있는데, ListView에 ViewHolder 패턴, DataBinding을 적용했는데 잘못된 부분이 있어서 수정하는 작업을 진행했습니다. 혹시 비슷한 어려움을 겪고 계실분들을 위해서 적용한 코드를 설명하려합니다. 우선 기존 코드에서는 getView가 호출될때, 데이터가 늘어나서 스크롤이 생기면, position값에 따라 데이터가 의도하지 않은대로 동작하는 문제가 있었습니다. ViewHolder의 데이터가 position을 잃어버리는것과 같이 이상동작합니다. 문제는 mHolder로 setT..

Development/Android 2022.03.14
반응형