본문 바로가기

Android20

[Android] TrustedTime API: 앱에서 신뢰할 수 있는 시간 관리 방법 Google Developer 사이트를 보다 흥미로운 새 API를 발견하여 가져왔습니다.이 글은 제 개인적인 창작물이 아니라, 구글 블로그에 게재된 내용을 바탕으로 번역하여 작성한 것입니다. 앱 개발 시 일정 관리, 이벤트 스케줄링, 거래 기록, 보안 등 다양한 기능에 있어 정확한 시간이 필수적입니다. 하지만 기기의 시간을 그대로 사용하면 사용자가 이를 손쉽게 변경할 수 있어 여러 문제가 발생할 수 있죠. 이를 해결하기 위해 Google의 인프라를 활용해 기기의 시간 조작 여부와 관계없이 항상 정확한 시간을 제공하는 TrustedTime API를 소개합니다.TrustedTime API란?TrustedTime API는 Google의 안전한 서버와 주기적으로 동기화하여 앱이 네트워크 요청 없이도 항상 최신의.. 2025. 2. 19.
[Android] 에뮬레이터 동작 오류 해결 및 업데이트 방법 최근에 Android Studio Koala | 2024.1.1에서 Android Studio Ladybug | 2024.2.1 Patch 2로 업데이트한 후, 에뮬레이터를 실행했더니 터치와 버튼이 동작하지 않는 문제가 발생했어요.같은 에뮬레이터를 사용해도 이전 버전에서는 잘 동작했지만, 업데이트된 버전에서는 문제가 생겼어요.Cold Boot나 데이터 삭제를 시도해 봤지만 문제는 그대로였어요.해결 방법을 찾던 중 에뮬레이터 버전이 원인일 수 있다는 이야기를 듣고 업데이트를 진행했어요.1. 안드로이드 에뮬레이터 다운로드 자료실  에뮬레이터 다운로드 자료실  |  Android Studio  |  Android Developers이 페이지에는 에뮬레이터 출시에 관한 다운로드 자료실이 포함되어 있습니다.dev.. 2024. 12. 14.
[Android] 안드로이드 네트워크 통신의 기본: Retrofit과 OkHttp 안드로이드 앱 개발에서는 서버와 데이터를 주고받는 작업은 필수적이에요. 서버에서 데이터를 가져와 화면에 표시하거나, 사용자가 입력한 데이터를 서버로 전송하는 과정이 바로 네트워크 통신이에요. 이런 작업을 간단하고 효율적으로 처리할 수 있도록 도와주는 도구가 Retrofit과 OkHttp입니다. 이번 글에서는 이 두 도구의 특징과 설정 방법, 그리고 데이터를 가져오고 보내는 예제를 자세히 설명할게요.1. Retrofit과 OkHttp란 무엇인가요?Retrofit이란?Retrofit은 서버와 데이터를 주고받는 작업을 쉽게 만들어주는 도구예요. 특히 RESTful API와 잘 맞아, API의 주소와 필요한 데이터를 간단히 정의하면 요청과 응답을 손쉽게 처리할 수 있어요. Retrofit의 주요 특징간단한 요청.. 2024. 12. 10.
[Android] 안드로이드 앱 테스트 실패 에러 해결하기 : connectedDebugAndroidTest FAILED 안드로이드 앱 테스트를 진행하다가 발생한 `:app:connectedDebugAndroidTest` 관련 에러와 해결 과정을 공유하려고 해요. 이번 문제는 테스트 리포트 파일이 비어 있어서 원인 파악이 쉽지 않았지만, 여러 단계를 거쳐 해결할 수 있었어요.에러 상황테스트를 실행했을 때 다음과 같은 에러가 발생했어요.> Task :app:connectedDebugAndroidTest FAILEDTest run failed to complete. No test results더보기> Task :app:connectedDebugAndroidTest FAILEDTest run failed to complete. No test resultsFAILURE: Build failed with an exception.* .. 2024. 11. 28.
[Android] NavController와 NavHost: Jetpack Compose의 화면 전환 핵심 요소 오늘은 Android 개발에서 화면 간 이동을 더욱 쉽게 만들어주는 NavController와 NavHost에 대해 알아볼게요!Jetpack Compose에서는 기존 Android 방식보다 간결하고 유연한 화면 전환을 구현할 수 있는 도구를 제공합니다.이 글에서는 NavController와 NavHost의 역할, 동작 방식, 기존 방식과의 차이점을 자세히 설명해 드릴게요. 1. NavController란?NavController는 Jetpack Compose에서 화면 전환의 중심 역할을 담당하는 객체예요.앱에서 여러 화면을 넘나들 때, NavController는 이동을 처리하고 뒤로 가기 같은 기능도 관리해 줘요.화면 전환뿐만 아니라, 뒤로 가기 스택 관리 등 복잡한 로직도 자동으로 처리해 줘요.쉽게 말.. 2024. 11. 18.
[Android] 앱 아키텍처 가이드 오늘은 Android 개발을 위한 아키텍처 가이드라인을 소개해드리려고 해요. Android 앱을 개발할 때 좋은 구조를 가지는 것은 유지보수와 확장성 측면에서 매우 중요해요. 이 글에서는 Google이 추천하는 아키텍처 패턴과 그 구성 요소들을 쉽게 설명해볼게요~1. Android 앱 아키텍처란?앱 아키텍처는 앱의 구성요소들 간의 관계와 기능을 정의해요. 예를 들어, 데이터를 어디에 저장하고, 화면에 어떻게 보여줄지를 정리하는 거죠. 좋은 아키텍처는 앱이 커져도 유지보수가 쉽고, 견고하게 동작하도록 도와줘요. 크게 UI 레이어, 도메인 레이어와 데이터 레이어로 나누어 생각해볼 수 있어요.1. 관심사 분리가장 중요한 원칙 중 하나는 관심사 분리예요. `Activity`나 `Fragment` 같은 UI 클래.. 2024. 11. 12.
[Android]안드로이드 스튜디오 로그(Log) 가이드 오늘은 안드로이드 스튜디오에서 사용되는 로그에 대해서 알아보려고 해요. 로그(Log)는 개발자가 애플리케이션을 디버깅하거나 상태를 확인하는 데 매우 유용한 도구예요. 안드로이드 개발을 하다 보면 로그를 자주 사용하게 되는데요, 그 이유와 사용 방법에 대해 함께 알아볼게요.1. 로그의 중요성안드로이드 애플리케이션을 개발하면서 코드를 실행해도 예상대로 동작하지 않거나, 특정 상황에서 오류가 발생할 때가 있어요. 이럴 때 로그를 활용하면 애플리케이션 내부에서 무슨 일이 일어나는지 쉽게 파악할 수 있어요. 로그는 개발자에게 애플리케이션의 상태를 텍스트로 보여주기 때문에, 문제를 찾고 해결하는 데 큰 도움이 돼요.2. 로그 레벨`Log` 클래스는 다섯 가지 주요 로그 레벨을 제공해요. 각 로그 레벨은 용도와 중요.. 2024. 11. 10.
[Android] Android 자동 테스트 작성 및 유형 자동 테스트는 앱의 기능을 검증하고 코드 변경 후에도 안정적으로 동작하는지 확인하는 중요한 과정이에요. Android에서는 로컬 테스트와 계측 테스트라는 두 가지 주요 테스트 유형을 사용할 수 있습니다. 이 두 가지 테스트의 차이점과 작성 방법을 아래에서 설명해볼게요.1. 자동 테스트 유형로컬 테스트로컬 테스트는 개발자의 컴퓨터(워크스테이션)에서 실행되며, 소규모 코드의 정확성을 검증하는 데 사용돼요. 함수, 클래스, 속성 등의 작은 단위에서 발생할 수 있는 버그를 빠르게 확인할 수 있습니다.특징함수, 클래스, 속성 등 소규모 코드 단위 테스트Android 스튜디오에서 로컬 테스트를 자동으로 실행 가능빠른 피드백과 간편한 실행 환경 제공계측 테스트계측 테스트는 UI 상호작용을 포함한 앱의 실제 환경에서의.. 2024. 9. 6.
[Android] Stateful, Stateless 컴포저블 차이와 상태 호이스팅 Jetpack Compose에서 UI를 구성할 때, 컴포저블 함수는 크게 두 가지 유형으로 나눌 수 있어요: Stateful 컴포저블과 Stateless 컴포저블이에요. 이 두 가지 유형은 상태를 어떻게 관리하고, 어디에 위치시킬지에 따라 구분됩니다. 또한, 상태 호이스팅은 이 두 유형의 컴포저블 간의 상호작용을 효율적으로 관리하기 위한 중요한 개념이에요.1. Stateful 컴포저블이란?Stateful 컴포저블은 내부에 상태를 가지고 있으며, 이 상태는 시간이 지나면서 변할 수 있어요. 이 컴포저블은 자체적으로 상태를 관리하고, 상태의 변화에 따라 UI를 업데이트합니다. Stateful 컴포저블은 주로 간단한 상태 관리가 필요한 UI 요소에서 사용돼요.예시@Composablefun StatefulCou.. 2024. 9. 4.