Android
-
코틀린 코루틴 핵심 정리(개념부터 예제까지)-고슴도치 군단카테고리 없음 2026. 5. 8. 17:00
코루틴 개요코틀린 코루틴(Coroutine)은 비동기 코드를 마치 동기 코드처럼 순차적으로 작성할 수 있게 해주는 도구임기존 안드로이드 개발에서는 AsyncTask나 RxJava로 비동기 처리를 해왔지만, 콜백이 중첩되면서 코드가 복잡해지는 문제가 있었음코루틴을 사용하면 네트워크 요청, DB 조회 등 시간이 걸리는 작업을 간결하고 읽기 쉬운 코드로 처리할 수 있음구글은 2019년 이후 안드로이드 공식 문서에서 AsyncTask 대신 코루틴 사용을 권장하고 있으며, 현재 대부분의 신규 안드로이드 프로젝트에서 코루틴이 기본으로 사용됨핵심 개념 정리코루틴을 이해하려면 세 가지 핵심 개념을 먼저 파악해야 함CoroutineScope는 코루틴이 실행되는 범위를 정의하며, 스코프가 종료되면 그 안의 코루틴도 함께 ..
-
Retrofit2 @Streaming 제대로 알기(내부 원리부터 파일 다운로드까지)-고슴도치 군단카테고리 없음 2026. 4. 28. 09:31
@Streaming 어노테이션 개요Retrofit2에서 HTTP 응답을 처리하는 기본 방식은 응답 전체를 메모리에 버퍼링하는 것임.작은 JSON 응답이라면 문제없지만, 대용량 파일이나 동영상을 다운로드할 때는 메모리 부족이나 OOM(Out Of Memory) 오류가 발생할 수 있음.@Streaming 어노테이션은 이 버퍼링 동작을 비활성화하고, 서버 소켓에서 직접 데이터를 스트리밍 방식으로 읽을 수 있게 해주는 핵심 기능임.기본 사용법@Streaming은 인터페이스 메서드 선언 위에 붙이며, 반환 타입은 반드시 ResponseBody여야 의미가 있음.Converter가 붙어있는 타입(예: Call)을 반환하면 Converter 내부에서 어차피 전체 본문을 읽기 때문에 스트리밍 효과가 없음.아래 예시처럼 ..
-
Android 테더링 구현 핵심 정리(USB·WiFi 기기 간 데이터 이동)-고슴도치 군단카테고리 없음 2026. 4. 27. 19:20
테더링 개요Android 기기에서 테더링은 크게 USB 테더링과 WiFi 테더링(소프트 AP) 두 가지로 나뉨.USB 테더링은 케이블로 연결된 PC나 다른 기기에 인터넷을 공유하는 방식이며, WiFi 테더링은 소프트 AP를 열어 무선으로 여러 기기가 접속할 수 있게 하는 방식임.일반 앱과 시스템 앱이 접근할 수 있는 API 범위가 다르므로, 사용 목적에 맞는 방식을 선택하는 것이 중요함.WiFi 테더링 구현Android 8.0(API 26) 이상에서는 WifiManager.startLocalOnlyHotspot()을 사용해 인터넷 공유 없이 기기 간 P2P 통신용 핫스팟을 열 수 있음.이 방식은 시스템 권한 없이도 동작하며, SSID와 비밀번호는 콜백으로 자동 발급됨.아래는 기본적인 LocalOnlyHo..
-
AI Core와 ML Kit Prompt API 핵심 정리(Android 온디바이스 AI 입문)-고슴도치 군단카테고리 없음 2026. 4. 19. 00:37
온디바이스 AI 등장 배경스마트폰이 고성능 NPU를 탑재하면서 클라우드 없이도 AI 추론이 가능한 환경이 마련됨.기존 클라우드 기반 AI는 네트워크 의존성, 레이턴시, 서버 비용이라는 세 가지 한계를 가지고 있었음.Google은 이를 해결하기 위해 Gemini Nano와 AICore를 Android 생태계에 통합하기 시작함.AI Core 개요AI Core(AICore)는 Android 14부터 기본 탑재된 시스템 레벨 서비스임.온디바이스 AI 모델의 배포·업데이트·추론 가속을 일괄 관리하는 인프라 역할을 담당함.앱 개발자는 모델 파일을 직접 관리할 필요 없이 AICore가 제공하는 API만 호출하면 됨.AICore의 주요 역할은 다음과 같음.모델 자동 배포 및 업데이트 관리NPU/GPU를 활용한 하드웨어..
-
안드로이드 프리다(Frida) 핵심 정리 — 설치부터 후킹까지카테고리 없음 2026. 4. 9. 09:31
프리다(Frida)란 무엇인가프리다(Frida)는 실행 중인 앱의 내부 동작을 실시간으로 분석하고 조작할 수 있는 동적 인스트루멘테이션(Dynamic Instrumentation) 툴킷이다.앱을 재컴파일하거나 소스코드 없이도 JavaScript 코드를 프로세스에 주입하여 함수 호출을 가로채거나 반환값을 변경할 수 있다.보안 연구자, 앱 분석가, CTF 참가자들이 가장 널리 사용하는 도구 중 하나로, Java 메서드와 Native 함수 모두 후킹이 가능하다는 점에서 강력한 범용성을 갖는다.프리다는 PC의 클라이언트(Python/CLI)와 Android 기기의 frida-server가 USB 또는 네트워크로 통신하는 구조로 동작한다.클라이언트에서 JavaScript 에이전트를 작성하면 frida-server..
-
RxJava Worker 핵심 정리 — 스케줄러와 스레드 제어 제대로 알기카테고리 없음 2026. 4. 8. 23:55
Worker란 무엇인가?RxJava에서 Worker는 Scheduler의 내부 추상 클래스로, 특정 스레드 또는 스레드 풀 위에서 작업을 예약하고 실행하는 단위입니다.Scheduler가 "어느 스레드에서 실행할지"를 결정하는 정책이라면, Worker는 그 정책을 실제로 수행하는 실행 주체입니다.직접 Worker를 사용하는 경우는 커스텀 Scheduler를 구현하거나, Scheduler 내부 동작을 세밀하게 제어할 때 주로 등장합니다.Scheduler와 Worker의 관계Scheduler는 createWorker() 메서드를 통해 Worker 인스턴스를 생성합니다.하나의 Scheduler에서 여러 Worker를 만들 수 있으며, 각 Worker는 독립된 작업 큐를 갖습니다.Worker는 Disposable..
-
Kotlin Flow와 StateFlow로 안드로이드 상태 관리 제대로 하기카테고리 없음 2026. 4. 4. 16:47
Kotlin Flow가 필요한 이유안드로이드 앱을 개발하다 보면 UI 상태를 반응형으로 관리해야 하는 상황이 자주 발생합니다.기존 LiveData만으로는 복잡한 비동기 흐름을 처리하는 데 한계가 있었고, 특히 여러 스트림을 조합하거나 변환하는 작업이 번거로웠습니다.Kotlin Flow는 코루틴 기반의 비동기 데이터 스트림으로, 이 문제를 우아하고 간결하게 해결해 줍니다.Flow, SharedFlow, StateFlow의 차이Kotlin의 Flow 계열에는 세 가지 주요 타입이 있으며, 각 타입은 용도와 동작 방식이 다릅니다.상황에 맞게 올바른 타입을 선택하는 것이 안정적인 앱 아키텍처의 출발점입니다.Flow: Cold Stream입니다. 수집(collect)이 시작될 때 데이터 생성이 시작되며, 일회성 ..
-
Compose UI 디버깅 핵심 정리 — Layout Inspector부터 Recomposition 추적까지카테고리 없음 2026. 4. 1. 14:07
Compose UI 디버깅이 필요한 이유Jetpack Compose는 선언형 UI 패러다임을 채택하면서 기존 View 시스템과는 완전히 다른 디버깅 방식을 요구한다.XML 기반의 View 계층 구조를 직접 탐색하던 방식과 달리, Compose는 함수 호출 체인과 상태(State) 흐름을 이해해야 문제를 파악할 수 있다.특히 Recomposition이 예상보다 잦거나, UI가 상태 변화에 반응하지 않는 경우 원인을 찾기 어렵기 때문에 체계적인 디버깅 도구와 전략이 필수적이다.Layout Inspector로 Compose 계층 구조 분석하기Android Studio에 내장된 Layout Inspector는 Compose UI를 실시간으로 시각화하는 가장 강력한 도구 중 하나다.Run > Profiler 또는..