본문 바로가기

분류 전체보기31

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.
[Kotlin] Kotlin when 문에서 else를 써야 할 때와 생략할 때 Kotlin의 when 문은 다양한 조건을 간결하고 읽기 쉽게 처리할 수 있는 도구예요. 하지만 when 문을 사용할 때 else 블록을 언제 꼭 써야 하고, 언제 생략해도 괜찮은지 헷갈릴 때가 있죠. 이 글에서는 else가 필요한 상황과 생략 가능한 경우를 명확히 설명하고, 예제를 통해 쉽게 이해할 수 있도록 정리해 봤어요.`else`를 생략할 수 있는 경우else는 모든 가능한 조건을 완벽히 처리한 경우에 생략할 수 있어요. Kotlin 컴파일러가 "여기서는 빠지는 경우가 없다"라고 확신할 수 있는 상황에서만 else 없이 코드를 작성할 수 있답니다.생략 가능한 조건enum class: 모든 값이 고정되어 있는 열거형 클래스의 경우.sealed class: 모든 서브클래스를 처리한 경우.예제 1: e.. 2024. 12. 12.
[Android] 안드로이드 네트워크 통신의 기본: Retrofit과 OkHttp 안드로이드 앱 개발에서는 서버와 데이터를 주고받는 작업은 필수적이에요. 서버에서 데이터를 가져와 화면에 표시하거나, 사용자가 입력한 데이터를 서버로 전송하는 과정이 바로 네트워크 통신이에요. 이런 작업을 간단하고 효율적으로 처리할 수 있도록 도와주는 도구가 Retrofit과 OkHttp입니다. 이번 글에서는 이 두 도구의 특징과 설정 방법, 그리고 데이터를 가져오고 보내는 예제를 자세히 설명할게요.1. Retrofit과 OkHttp란 무엇인가요?Retrofit이란?Retrofit은 서버와 데이터를 주고받는 작업을 쉽게 만들어주는 도구예요. 특히 RESTful API와 잘 맞아, API의 주소와 필요한 데이터를 간단히 정의하면 요청과 응답을 손쉽게 처리할 수 있어요. Retrofit의 주요 특징간단한 요청.. 2024. 12. 10.
[Kotlin] 코루틴(coroutine)예외 처리와 취소 Kotlin의 코루틴을 사용할 때, 예외 처리와 취소는 중요한 주제예요. 코루틴이 어떻게 예외를 전파하고, 취소 시 어떤 동작을 하는지 제대로 이해하면 더 안정적이고 신뢰할 수 있는 프로그램을 작성할 수 있어요. 이번 글에서는 코루틴의 예외 처리와 취소 메커니즘, 그리고 관련된 다양한 상황들을 예제와 함께 살펴볼게요.1. 코루틴에서의 예외 전파코루틴 빌더(`launch`, `async`)는 예외를 처리하는 방식이 달라요.`launch` 빌더:발생한 예외는 자동으로 전파돼요.uncaught exception처럼 취급되어 기본 예외 처리기`Thread.defaultUncaughtExceptionHandler`에서 처리돼요.`async` 빌더:예외가 `Deferred` 객체에 담겨 사용자에게 노출돼요.사용자가.. 2024. 12. 2.
[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.
[Tistory] Book Club 스킨 리스트 중첩 시 글자 겹침 문제 중첩 리스트 사용 시 글자 겹침 문제 해결하기 안녕하세요. 오늘은 중첩된 리스트를 사용할 때 발생하는 기호와 글자 겹침 문제를 해결하는 방법을 공유하려고 해요.문제 상황리스트가 이상하다?  하.. 글을 작성한 후 비공개 상태에서 미리 보기를 확인하던 중, 이상한 부분을 발견했어요.특히, `` 리스트 안에 `` 리스트를 중첩해서 사용할 때 기호와 글자가 겹치는 현상이 나타났죠. 만 사용한 경우에는 문제가 없었어요.하지만 안에 을 중첩한 경우 문제가 발생했어요. 여러 번 수정해 보고 검색도 해봤지만 관련 내용을 찾을 수 없었어요.마지막으로 다른 스킨을 적용해 보니 문제가 없다는 점에서, 현재 사용하는 Book Club 스킨의 CSS에 문제가 있다고 결론 내렸어요.문제 해결 과정1. 개발자 도구 이용하기우선.. 2024. 11. 18.
[Android] NavController와 NavHost: Jetpack Compose의 화면 전환 핵심 요소 오늘은 Android 개발에서 화면 간 이동을 더욱 쉽게 만들어주는 NavController와 NavHost에 대해 알아볼게요!Jetpack Compose에서는 기존 Android 방식보다 간결하고 유연한 화면 전환을 구현할 수 있는 도구를 제공합니다.이 글에서는 NavController와 NavHost의 역할, 동작 방식, 기존 방식과의 차이점을 자세히 설명해 드릴게요. 1. NavController란?NavController는 Jetpack Compose에서 화면 전환의 중심 역할을 담당하는 객체예요.앱에서 여러 화면을 넘나들 때, NavController는 이동을 처리하고 뒤로 가기 같은 기능도 관리해 줘요.화면 전환뿐만 아니라, 뒤로 가기 스택 관리 등 복잡한 로직도 자동으로 처리해 줘요.쉽게 말.. 2024. 11. 18.
[Kotlin] StateFlow: Android 상태 관리를 위한 필수 도구 오늘은 Kotlin의 `kotlinx.coroutines.flow`에서 제공하는 강력한 상태 관리 도구인 StateFlow에 대해 알아보려고 해요. 이 글을 통해 `StateFlow`의 개념부터 실제 활용 사례까지 자세히 살펴볼게요.1. StateFlow란 무엇인가요?`StateFlow`는 `kotlinx.coroutines.flow`에서 제공하는 특별한 종류의 `Flow`로, 상태 관리에 최적화된 Hot Stream이에요. 항상 현재 상태를 보유하며, 상태가 변경될 때 구독자들에게 이를 알리는 데 사용돼요.특히 Jetpack Compose와 같이 상태 기반의 UI 프레임워크에서 유용하게 활용할 수 있어요. 뷰모델에서 상태를 관리하고, UI는 이를 구독해서 자동으로 상태를 반영하도록 설계할 때 적합해요... 2024. 11. 15.