Android
[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..
[Android] MockWebServer로 Mock API 활용하기
본 글은 MockWebServer 사용 방법에 초점을 두어 작성되었습니다.*Test 환경이 아닌 곳에서 사용하였습니다. 들어가기 전UI 렌더링 최적화 테스트를 위해 리스트를 만들어 테스트를 진행해야 했다.더미 리스트를 만들어서 넣는 것보다 실제 네트워크를 통해 데이터를 받아와 테스트하고 싶었다.개발된 API가 따로 없어 공공 API를 활용해야 했지만, 실제 Unit Test에서 많이 사용되는 MockWebServer를 활용해 보고 싶어 선택하게 되었다.프로젝트 설명MockWebServer를 활용해 공지사항 json response를 받아온다.받아온 response를 diffUtil RecyclerView를 통해 리스트 뷰로 보여주도록 한다.프로젝트 구성테스트용 프로젝트이지만 관심사 분리를 위해 폴더링은 ..