Android

[Android] implemantation을 Version Catalog로 바꿔보자
들어가기 전우리의용기 프로젝트를 -v2 로 마이그레이션 하는 과정에서 기존 의존성 버전 관리 방법에서 버전 카탈로그 방식으로 변경하였다. 이러한 변경의 과정과, 왜 이 변경이 필요했고 어떤 장점이 존재하는지 이번 포스팅에서 알아보고자 한다.Gradle 버전 카탈로그를 활용한 의존성 관리: 왜 필요할까?기존 방식의 문제점build.gradle에서 의존성을 관리할 때, 보통 아래와 같은 방식으로 버전을 명시한다.implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2")이 방식은 간단하고 익숙하지만, 프로젝트가 커지면서 다음과 같은 문제가 발생할 수 있다.버전 중복: 여러 모듈에서 동일한 의존성을 사용하는 경우, 각 모듈마다 버전을 반복적으로 ..

[Android] Github Actions로 업무 생산성 향상 시키기 feat. APK 자동 추출
목표GithubActions CI/CD 파이프라인을 구축해 서버에 APK 업로드를 자동화 하자.개발 프로세스의 효율성과 생산성을 극대화하기 위함.문제의식기존 방법의 문제점가상화 서버에 안드로이드 어플을 업로드하기 위해서 포털을 이용하여 직접 APK 파일을 업로드 하였다.하지만 새로운 업데이트가 있을 때 마다 변경된 사항을 Android Studio Build로 APK를 추출하고, 포털에 들어가서 업로드를 진행해야하는 번거로움이 있었다.Github로 관리하는 코드어플 프로젝트 코드 및 파일은 Github로 관리하고 있었다.따라서 이 점을 활용해 GithubActions를 이용하여 APK를 자동으로 추출하고, 추출 뿐만 아니라 서버 업로드까지 자동화하면 어떨까? 라는 생각이 들었다.GithubActions로..

[Android] Menu 데이터는 어디에 저장하는 게 성능이 좋을까? (RoomDB vs Object)
들어가기 전모바일 휴대폰의 설치된 어플리케이션 목록처럼, 화면에 이동 가능한 Activity 버튼들이 나열되어 있는 화면을 구현하고 있습니다. RecyclerView로 구현하여 각 item에 담을 리스트 데이터가 저장되어 있는데 .. 이 리스트를 RoomDB에 저장하는게 좋을지, Object에 선언하는 것이 좋을지. 성능 측면에 이점이 궁금해 각각을 알아보고, 분석을 하고자 합니다.

[Android/공부] NDK(네이티브 개발 키트) 사용과 ABI 빌드 환경 톺아보기
들어가기 전가상화 솔루션은 x86 환경에 안드로이드 앱을 올린다. 이 때 안드로이드 앱에서 사용한 네이티브로 작성된 라이브러리(.so)가 x86 환경에서는 실행되지 않는 경우가 있었다.왜 이런 상황이 발생하는지, 어떻게 NDK를 사용 및 빌드해야 해결할 수 있는지를 알아보고자 이 포스팅을 작성하게 되었다.NDK란?네이티브 개발 키트(NDK)는 Android에서 C및 C++코드를 사용할 수 있게 해주는 일련의 도구 모음이다.NDK의 호환 가능한 아키텍처ARMarmeabi-v7a : 32비트 ARM 아키텍처arm64-v8a : 64비트 ARM 아키텍처x86x86 : 32비트 Intel 아키텍처x86_64 : 64비트 Intel 아키텍처NDK는 다양한 아키텍처에 대한 지원을 제공하며, 각 아키텍처는 ABI를 ..

[Android/트러블슈팅] NetworkOnMainThreadException 발생으로 살펴보는 Thread
들어가기 전MockWebServer로 API 테스트를 하면서 NewtworkOnMainThreadException이 발생하였다.이번 포스팅에서 Android Thread에 대해 살펴보면서, NetworkOnMainThreadException가 무엇인지, 왜 발생한 것인지 등 새롭게 알게된 내용들을 정리하도록 하겠다.NetworkOnMainThreadException 이란?android.os.NetworkOnMainThreadException해당 Exception은 Network 작업을 Main Thread에서 실행했을 때 발생하는 Exception이다.그렇다면 안드로이드에서는 왜 Network 작업을 Main Thread에서 해서는 안될까?질문에 답을 하기 위해서 Thread의 개념부터 Android의 ..

[Android/트러블슈팅] Kotlin 1.9.0 & Hilt Version Error
들어가기 전kotlin 1.9.0 을 사용하는 프로젝트에서 Hilt를 적용하려고 하니error: [Hilt] Unsupported metadata version. Check that your Kotlin version is >= 1.0: java.lang.IllegalStateException: Unsupported metadata version. Check that your Kotlin version is >= 1.0 at dagger.internal.codegen.kotlin.KotlinMetadata.metadataOf(KotlinMetadata.java:206) at dagger.internal.codegen.kotlin.KotlinMetadata.from(KotlinMetadata.java:18..