Android 개발의 세계에서 새롭고 주목할 만한 소식들을 전해드리는 'Now in Android'에 오신 것을 환영합니다.
이번 에디션에서는 안드로이드 플랫폼 카나리 채널, 안드로이드 스튜디오의 첫 번째 에이전틱 AI 출시, 16KB 페이지 크기 요구사항 및 기타 정책 변경 사항을 포함한 플레이 업데이트, 일회성 구매, 플레이 게임 서비스 v2 및 PC용 구글 플레이 게임과 관련된 새로운 기능들, AI 및 개발 생산성에 대한 I/O 요약, 안드로이드 16이 탑재된 차세대 삼성 기기, 컴포즈 팁 등 다양한 내용이 다뤄집니다.
이 포스팅의 대부분은 영상 또는 팟캐스트로도 제공되니, 편하게 읽는 대신 보고 듣는 것을 추천합니다. (물론 세 가지를 모두 활용하면 기억에 더 오래 남겠죠! 시험은 없으니 걱정 마세요.)
기존의 개발자 프리뷰 모델을 대체하는 새로운 카나리(Canary) 릴리스 채널이 도입되었습니다. 이 채널은 개발자들에게 개발 중인 플랫폼 기능에 대해 일년 내내 더 빠르고 지속적인 접근을 제공합니다.
이전에는 개발자 프리뷰를 사용하려면 매번 수동으로 플래시해야 했고, 플랫폼 버전이 베타 단계에 도달하면 프리뷰 프로그램이 종료되어 다음 주기에 다시 수동으로 플래시해야 하는 불편함이 있었습니다. 이제 새로운 카나리 채널을 통해 지원되는 픽셀 기기에서는 지속적이고 자동적인 OTA(Over-the-air) 업데이트를 받을 수 있습니다.
이 변화는 개발자들이 최신 기능을 더 편리하게 테스트하고 피드백을 제공할 수 있도록 돕습니다. 하지만 카나리 채널은 아직 버그나 예상치 못한 변경 사항이 많을 수 있으므로, 메인 기기보다는 테스트용 기기에 사용하는 것이 좋습니다.
새로운 안드로이드 카나리(Canary) 채널은 다음과 같은 용도로 활용할 수 있습니다.
최신 기능 조기 경험: 가장 초기 단계에 있는 새로운 기능과 잠재적 동작 변경 사항을 미리 접할 수 있습니다.
CI 시스템 연동: 지속적 통합(CI) 시스템에 빌드를 통합하여 앱 호환성 문제를 조기에 파악할 수 있습니다.
개발 및 테스트: SDK 관리자를 통해 카나리 SDK를 다운로드하고, 안드로이드 스튜디오 카나리 채널을 통해 빌드에 접근하여 개발 및 테스트를 진행할 수 있습니다.
이 카나리 채널은 기존의 베타(Beta) 프로그램과 병행하여 운영됩니다. 하지만 카나리 빌드는 최신 개발 단계의 빌드이기 때문에 버그나 치명적인 변경 사항이 포함될 수 있습니다. 따라서 메인 기기에 사용하기보다는 앱을 탐색하고 시험하는 용도로 사용하는 것이 가장 좋습니다. 베타 채널은 다음 플랫폼 출시를 대비해 앱 테스트에 집중하기에 여전히 적합한 채널입니다.
시작하려면 지원되는 픽셀 기기에 안드로이드 플래시 툴(Android Flash Tool)을 사용하거나, 안드로이드 에뮬레이터를 카나리 이미지로 구성하면 됩니다. 발견된 버그나 피드백은 구글 이슈 트래커(Google Issue Tracker)를 통해 제출할 수 있습니다.
이번 안드로이드 스튜디오 나왈(Narwhal) 피처 드롭 카나리(Feature Drop Canary) 릴리스에는 AI가 복잡한 개발 작업을 처리할 수 있게 해주는 새로운 기능인 "에이전트 모드(Agent Mode)"가 포함되었습니다.
이 기능은 자연어로 목표를 설명하면, AI가 여러 프로젝트 파일에 걸쳐 코드를 변경하고 빌드하며 검색하는 등 IDE 도구들을 활용해 실행 계획을 세워줍니다. 여러분은 제안된 변경 사항을 검토하고 수락하거나 거부하며 상호작용할 수 있고, 자동 승인 옵션도 있습니다.
또한, 자신의 제미니 API 키를 추가하여 에이전트 모드를 향상시킬 수 있습니다. 이렇게 하면 제미니 2.5 프로를 통해 컨텍스트 창이 100만 토큰으로 확장됩니다. 이 확장된 컨텍스트는 제미니가 더 많은 명령과 코드를 처리할 수 있도록 해주어 더 복잡하고 긴 작업을 해결하는 데 특히 유용합니다. 비즈니스 티어 구독자는 제미니 코드 어시스트(Gemini Code Assist) 라이선스를 통해 이 혜택을 자동으로 받게 됩니다.
에이전트 모드는 모델 컨텍스트 프로토콜(MCP)도 지원합니다. 이는 외부 도구와 통합하기 위한 표준화된 방법으로, 초기 릴리스에서는 도구 상호작용을 위한 stdio 전송을 지원합니다. MCP 서버는 스튜디오 구성 디렉터리에 있는 mcp.json 파일을 통해 설정할 수 있습니다.
안드로이드는 앱 성능 향상을 위해 16KB 메모리 페이지 크기로 전환하고 있습니다. 2025년 11월 1일부터 NDK를 사용하여 개발되었고 안드로이드 15 이상을 대상으로 하는 새로운 앱 및 업데이트는 구글 플레이에 제출 시 16KB 페이지 크기를 반드시 지원해야 합니다. Kotlin이나 Java로만 개발된 앱은 이미 호환됩니다.
16KB 페이지 크기로 구성된 기기는 앱 실행 시간 단축, 배터리 소모량 감소, 카메라 시작 속도 향상 등을 포함하여 전반적인 성능이 5-10% 개선될 수 있습니다. 4KB 페이지도 16KB 경계에 맞춰져 있기 때문에, 한 번 업데이트된 애플리케이션 바이너리는 4KB와 16KB 기기 모두에서 실행될 수 있습니다.
안드로이드 스튜디오는 이러한 전환을 돕기 위해 다음과 같은 도구를 제공합니다.
탐지 (Detection)
APK Analyzer: 네이티브 라이브러리와 16KB 호환 여부를 식별합니다.
정렬 확인 및 Lint: 16KB 요구사항을 준수하지 않는 사전 빌드된 라이브러리에 대해 경고를 보냅니다.
빌드 (Building)
AGP(Android Gradle Plugin) 8.5.1+ 및 NDK r28+: 이 버전들부터 16KB 정렬이 기본적으로 활성화됩니다.
코드 조정 (Code Adjustments)
개발자는 4KB로 고정된 페이지 크기를 getpagesize() 또는 sysconf(_SC_PAGESIZE)와 같은 런타임 쿼리로 대체해야 합니다. 이는 페이지 크기를 직접 지정하는 대신 런타임에 페이지 크기를 동적으로 가져와서 사용해야 함을 의미합니다.
테스트 (Testing)
안드로이드 스튜디오 16KB 에뮬레이터: 16KB 환경을 테스트할 수 있는 에뮬레이터가 제공됩니다.
실제 기기: 안드로이드 15 QPR1 이상이 설치된 호환되는 실제 기기에서는 개발자 옵션을 통해 4KB와 16KB 페이지 크기를 전환하며 테스트할 수 있습니다.
구글 플레이는 일회성 제품을 관리하는 방식을 업데이트하여, 디지털 아이템을 정의하고 판매하는 새로운 3단계 계층 구조를 도입했습니다.
새로운 모델은 다음과 같이 구성됩니다.
일회성 제품(One-time product): 구매되는 아이템을 정의합니다 (예: "다이아몬드 검").
구매 옵션(Purchase option): 아이템이 제공되는 방법, 가격 및 가용성을 결정합니다. 이제 "구매(buy)" 또는 "대여(rent)" 옵션을 사용할 수 있습니다.
오퍼(Offer): 할인이나 사전 주문과 같은 기능을 활성화하여 구매 옵션을 수정합니다.
이 새로운 구조를 통해 동일한 제품을 여러 방식으로 판매할 수 있게 됩니다. 새로운 기능에는 대여 기간 설정, 특정 날짜와 할인율을 포함한 사전 주문 설정, 개별 구매 옵션 및 오퍼에 대한 지역별 가격 및 가용성 관리가 포함됩니다. 기존의 기본 제품 가격 개념은 삭제되었습니다.
이러한 새로운 기능을 사용하려면, 플레이 빌링 라이브러리 8.0(Play Billing Library 8.0)으로 업그레이드하고, 플레이 개발자 API의 새로운 monetization.onetimeproducts 서비스 또는 업데이트된 플레이 개발자 콘솔을 사용해야 합니다. 또한 queryProductDetailsAsync API와 통합해야 합니다. 기존 SKU는 마이그레이션할 수 있지만, 새로운 기능은 기존의 querySkuDetailsAsync API나 inappproducts 서비스에서는 지원되지 않습니다. 플레이 콘솔 UI를 통해 생성된 제품은 새로운 시스템 내에서 정규화될 것입니다. 사전 주문 기능은 현재 얼리 액세스 프로그램(Early Access Program)을 통해 이용할 수 있습니다.
삼성은 갤럭시 Z 폴드7, Z 플립7, 갤럭시 워치8 시리즈를 공개하며, 적응형 경험(adaptive experiences)을 위한 새로운 개발 기회를 제공합니다.
폴더블 기기들은 안드로이드 16을 기반으로 하며, 강화된 데스크톱 창(windowing) 경험을 제공합니다. 개발자는 컴포즈 적응형 레이아웃(Compose Adaptive Layouts), 젯팩 내비게이션 3(Jetpack Navigation 3), 윈도우 사이즈 클래스(Window Size Classes)를 활용하여 이 기기들에 최적화된 앱을 만들 수 있습니다. 갤럭시 워치8 시리즈는 웨어 OS 6가 탑재된 최초의 기기입니다.
구글 플레이의 '인디 게임 펀드'가 라틴 아메리카 지역에서 4년째를 맞아, 이 지역의 10개 인디 게임 스튜디오를 지원하기 위해 200만 달러(약 27억 원)를 추가로 투자합니다. 이번 펀딩으로 이 프로그램을 통한 라틴 아메리카 인디 게임에 대한 총 투자액은 800만 달러(약 109억 원)에 이르게 됩니다.
선정된 스튜디오들은 15만 달러에서 20만 달러 사이의 자금과 함께 구글 플레이 팀의 지원을 받게 됩니다. 이 프로그램은 이미 모바일, PC, 또는 콘솔 등 어떤 플랫폼에서든 게임을 출시한 이력이 있는 인디 게임 개발자를 대상으로 했습니다.
2025년의 지원서 접수는 7월 31일에 마감되었으며, 7월 15일까지 접수된 지원서에 우선권이 주어졌습니다.
중요한 변경 사항: 워치 페이스 포맷으로의 전환
Wear OS 워치 페이스 개발은 워치 페이스 포맷(Watch Face Format)만을 독점적으로 지원하도록 변경됩니다. 이는 워치 페이스 개발자와 사용자 모두에게 중요한 변화입니다.
2025년 1월 27일부터 새로운 AndroidX 또는 Wearable Support Library (WSL)를 사용한 워치 페이스는 더 이상 Play 스토어에 게시할 수 없습니다.
2026년 1월 14일부터는 기존의 레거시(legacy) 워치 페이스는 Play 스토어에서 설치할 수 없게 되며, 업데이트 또는 수익 창출도 불가능해집니다.
기존 워치 페이스를 계속 제공하려면, 2026년 1월 14일까지 워치 페이스 포맷으로 마이그레이션하여 Play 스토어에 재제출해야 합니다. Watch Face Studio 사용자는 버전 1.8.7 이상을 사용해 재제출해야 합니다.
이러한 변화에 대비할 수 있도록, 마이그레이션을 돕는 다양한 자료들이 블로그 게시물에 정리되어 있으니 참고하세요.
Amanotes는 빌(Bill Vo)과 실버(Silver Nguyen)가 설립한 모바일 게임 회사로, 리듬 기반 음악 게임인 "Magic Tiles 3"를 포함한 여러 게임으로 누적 다운로드 30억 건을 돌파했습니다.
이 회사는 모바일 게임에 리듬 기반의 탭(tap) 방식을 결합하여 누구나 쉽게 음악을 즐길 수 있도록 하는 것을 목표로 합니다. Amanotes는 구글 플레이에서 글로벌 성장을 위해 Firebase로 A/B 테스트를 진행하고, 플레이 콘솔을 통해 분석 및 맞춤형 가격을 설정하는 등 다양한 도구를 활용했습니다.
I/O '25에서 구글 플레이는 개발자들이 구독 관리를 간소화하고 수익을 극대화할 수 있도록 여러 업데이트를 발표했습니다.
구독 기능 개선으로 수익 증대
부가 기능(Add-ons)이 포함된 구독: 이제 단일 거래에서 기본 구독과 구독 부가 기능을 함께 판매할 수 있어, 결제 일정도 통일할 수 있습니다. 부가 기능 생성 방법에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
혜택 노출 확대: 구독 센터, 알림 이메일, 구매 및 취소 과정 등 플레이의 다양한 영역에서 구독 혜택을 더 많이 보여주면서 자발적 이탈률이 2% 감소했습니다. 플레이 콘솔에서 구독 혜택 상세 정보를 입력할 수 있습니다.
새로운 유예 기간 및 계정 보류 기간: 비자발적 이탈을 줄이기 위한 기능입니다. 이제 유예 기간은 최대 30일, 계정 보류 기간은 최대 60일까지 맞춤 설정할 수 있으며, 전체 복구 기간은 60일을 초과할 수 없습니다. 구독 결제 실패 복구 기간을 연장한 개발자들은 갱신 시 비자발적 이탈률이 평균 10% 감소하는 효과를 보았습니다. 이 설정은 플레이 콘솔에서 조정할 수 있습니다.
그 외 주요 업데이트
결제 수단 설정 유도: 사용자에게 결제 수단 설정을 유도하는 기능이 추가되었습니다.
결제 옵션 및 시장 확장: 결제 옵션과 사용 가능한 시장을 확대했습니다.
AI 기반 인앱 거래 최적화: AI를 활용하여 인앱 거래를 최적화합니다.
장바구니 포기 알림: 장바구니에 상품을 남겨둔 사용자에게 알림을 보내는 기능이 도입되었습니다.
구글 플레이 게임즈 서비스(PGS) v1을 사용하는 게임은 2026년 5월 이후로 더 이상 게시하거나 업데이트할 수 없으며, v1 API는 2028년 3분기까지 완전히 지원이 중단될 예정입니다. 따라서 게임의 지속적인 기능을 보장하려면 PGS v1에서 v2로 마이그레이션해야 합니다.
주요 업데이트 및 기능
성과(Achievements): 이제 성과 기능이 플레이 스토어에 깊이 통합되어, 검색 결과 및 게임 세부 정보 페이지에서 발견할 수 있으며 플레이 포인트(Play Points)를 통해 사용자 참여를 유도할 수 있습니다. 게임 플레이 시작 2시간 내에 달성 가능한 5개의 성과를 포함하여, 최소 15개의 증분 성과(incremental achievements)를 설정하는 것이 좋습니다. 플레이 콘솔에서 여러 성과를 한 번에 설정할 수 있습니다.
프로모션 콘텐츠: 잠재 고객 타겟팅 기능이 강화되었습니다. 플레이 그룹핑 API(Play Grouping API)를 사용하여 게임 플레이 컨텍스트를 기반으로 맞춤형 세그먼트를 생성하고, 이를 활용하여 재참여를 유도하는 맞춤형 프로모션을 진행할 수 있습니다.
로그인: PGS v2는 안드로이드 기기 간의 매끄러운 로그인 및 진행 상황 동기화를 제공합니다. 또한, 리콜 API(Recall API)를 통해 PGS와 게임 내 계정 간의 연결을 관리할 수 있습니다.
향후 개발 계획에는 게임 내 플레이어 프로필에 통합할 수 있는 AI 기반 아바타 기능도 포함되어 있습니다.
Amazing Seasun Games는 자사의 액션 슈팅 게임인 Mecha BREAK를 PC용 Google Play Games를 통해 PC와 콘솔에 동시 출시했습니다.
이 게임은 PC용 Google Play Games의 출시 전략을 적극적으로 활용했습니다. 베타 기간 동안 진행된 사전 등록 캠페인에는 350만 명 이상의 플레이어가 참여하며 큰 성공을 거두었습니다.
개발사는 이 PC 플랫폼을 통해 최대 15%의 추가 수익(earnback)을 얻을 수 있으며, PC 게임 개발, 배급 및 성장에 필요한 지원도 받습니다. 이 지원에는 플레이 콘솔을 통한 PC 빌드 관리, 출시, 스토어 등록, 그리고 PC 전용 판매 보고서에 대한 접근 등이 포함됩니다.
Google Play Games 플랫폼은 Play Integrity API와 같은 도구를 제공하여 맬웨어 방지 및 부정행위 방지 기능을 포함한 안전한 인프라를 제공합니다.
Mecha BREAK는 자체 개발한 3D 엔진을 통해 고품질의 PC 경험을 제공하며, 6대6 영웅 전투, 3대3 매치, PvPvE “Mashmak” 추출 모드 등 다양한 전투 스타일을 선보입니다.
구글 I/O 2025에서 안드로이드 개발자 생산성을 향상시키기 위한 세 가지 주요 업데이트는 다음과 같습니다.
먼저, 안드로이드 스튜디오에 제미니 기반 AI가 탑재되어 코드 빌드와 테스트를 간소화합니다. 이 AI는 "Journeys for Android Studio," "Version Upgrade Agent," 그리고 복잡한 작업을 위한 "Agent Mode"와 같은 기능들을 포함합니다. 또한, 자연어를 사용해 Jetpack Compose 프리뷰를 생성하고 UI 코드를 변환할 수도 있습니다.
다음으로, 최신 Jetpack Compose가 출시되었습니다. 이 안정적인 최신 버전은 더 유연한 Navigation 3를 포함하고 있으며, 사용자 경험을 향상시키는 Material 3 Expressive 업데이트가 적용되었습니다. 이와 더불어 자동 채우기(autofill)와 자동 크기 조절 텍스트(auto-sizing text)와 같은 새로운 기능과 전반적인 성능 개선도 이루어졌습니다.
마지막으로, Kotlin Multiplatform (KMP) 공유 모듈 템플릿이 새롭게 추가되었습니다. 안드로이드 스튜디오의 이 새로운 템플릿은 개발자들이 안드로이드와 iOS 앱 간에 비즈니스 로직을 공유할 수 있도록 도와주어 개발 시간을 단축시킵니다. 이 기능은 업데이트된 Jetpack 라이브러리와 새로운 코드랩을 통해 지원됩니다.
구글 I/O '25에서는 안드로이드 개발자들이 AI를 활용할 수 있도록 세 가지 핵심적인 업데이트를 발표했습니다.
온디바이스 AI를 위한 Gemini Nano
ML Kit GenAI API는 Gemini Nano를 기반으로 하며, 기기 자체에서 AI 작업을 수행합니다. 덕분에 텍스트 요약, 교정, 이미지 설명과 같은 작업을 네트워크 연결 없이도 처리할 수 있습니다. 이는 사용자의 데이터가 기기 내에 머물러 개인정보 보호를 강화하고, 오프라인 환경에서도 AI 기능을 사용할 수 있게 합니다.
커스텀 모델을 위한 Google AI Edge
Google AI Edge 플랫폼은 온디바이스 하드웨어 가속기에 대한 지원을 강화하여, 개발자가 자체 모델을 효율적으로 실행할 수 있게 돕습니다. 또한 새로운 AI Edge Portal을 통해 벤치마킹을 할 수 있습니다. 현재 베타 버전인 Play for On-Device AI를 사용하면 커스텀 모델 다운로드를 효율적으로 관리할 수 있습니다.
클라우드 AI를 위한 Firebase AI Logic
고급 생성형 AI 사용 사례를 위해 Firebase AI Logic이 도입되었습니다. 이 도구는 백엔드를 직접 관리할 필요 없이 Gemini Flash, Gemini Pro, Imagen 같은 대규모 모델을 안전하고 간편하게 앱에 통합할 수 있도록 지원합니다. 특히, Gemini Live API를 사용한 대화형 AI나 Imagen을 활용한 시각적 에셋 생성 기능을 포함합니다.
이러한 새로운 API를 활용하여 AI 기반 경험을 구축하는 방법을 보여주는 오픈소스 Androidify 앱이 공개되었으며, 더 많은 예제는 Android AI 샘플 카탈로그에서 찾아볼 수 있습니다.
Ash와 Aaron이 위젯(Widgets)과 실시간 업데이트(Live Updates)의 새로운 기능에 대해 설명합니다.
위젯(Widgets)
위젯 개발이 더 쉬워지고 사용자 경험도 향상되었습니다.
Canonical Layouts(정규 레이아웃): 다양한 화면 크기에 맞춰 빠르고 일관된 디자인을 만들 수 있도록 미리 정의된 레이아웃을 제공합니다. 이를 통해 개발 속도를 높일 수 있습니다.
Generated Previews(생성형 미리보기): Glance 1.2(Android 15 이상)에서 강화된 이 기능은 실제 사용자 데이터를 기반으로 위젯 미리보기를 생성합니다. 이 기능을 사용할 때는 메모리와 속도 제한을 신중하게 관리해야 합니다.
실시간 업데이트 및 알림(Live Updates & Notifications)
ProgressStyleTemplate: 배달, 차량 공유와 같이 사용자가 시작한 시간 민감형 여정(journey)의 진행 상태를 간편하게 표시하도록 돕는 새로운 템플릿입니다. 광고나 스팸성 알림에는 사용할 수 없습니다.
상태 칩(status chip): 개발자는 알림이 실시간 업데이트 기준을 충족하는지 프로그래밍 방식으로 확인할 수 있으며, 사용자가 빠르게 접근할 수 있도록 눈에 띄는 새로운 상태 칩을 맞춤 설정할 수 있습니다.
구글 플레이를 사용하면 이제 하나의 안드로이드 앱 번들(Android App Bundle)로 전화, 태블릿, 폴더블, PC를 아우르는 방대한 사용자에게 게임을 배포할 수 있습니다. 이를 통해 여러 플랫폼에 걸쳐 게임을 배포하는 과정이 훨씬 간소화됩니다.
PC용 Google Play Games 플랫폼이 정식 출시(general availability)에 가까워지면서 개발자들을 위한 몇 가지 주요 기능을 제공하고 있습니다. 기존 터치 기반의 게임도 큰 수정 없이 PC에서 즐길 수 있도록 키보드로 자동 변환해 주는 기능이 포함되어 있습니다. 또한, 더 나은 PC 경험을 위해 매니페스트 플래그(manifest flag)를 설정하여 네이티브 마우스 지원을 추가할 수도 있습니다.
Jetpack Navigation 3가 알파 버전으로 출시되었습니다. 이는 Jetpack Compose의 선언적 특성에 맞춰 특별히 설계된 상태 기반 접근 방식을 제공합니다.
안드로이드 앱 개발자들이 주목해야 할 핵심 사항은 다음과 같습니다.
로직의 분리 (Decoupled Logic)
Navigation 3는 내비게이션 로직과 UI를 명확하게 분리하여, 테스트 용이성과 유연성을 크게 향상시킵니다. 이 덕분에 코드를 더 체계적으로 관리하고 재사용하기 쉬워집니다.
단일 진실 공급원으로서의 상태 (State as Single Source of Truth)
기존의 이벤트 기반 내비게이션 방식에서 벗어나, 앱의 상태(내비게이션 포함)를 단일 진실 공급원(Single Source of Truth)으로 사용하도록 권장합니다. 이는 상태 불일치 문제를 해결하고 앱의 동작을 예측 가능하게 만듭니다.
개발자가 관리하는 백스택 (Developer-Owned Backstack)
이제 개발자가 백스택 상태를 직접 소유하고 관리할 수 있습니다. 이를 통해 모듈 간 타입 안정성(type-safety) 확보나 멀티-창 레이아웃(multi-pane layouts)과 같은 복잡한 시나리오를 더 간단하게 처리할 수 있습니다.
유연한 빌딩 블록 (Flexible Building Blocks)
Navigation 3는 Compose의 패턴과 더 잘 통합되는 빌딩 블록을 제공합니다. 이는 개발자가 더 강력하고 제어 가능한 내비게이션 솔루션을 구축할 수 있게 돕습니다.
현재 알파 버전인 만큼, 개발자들은 새로운 기능을 미리 체험해 보고 피드백을 제공하여 라이브러리 개선에 기여할 수 있습니다.
Android Studio의 Jetpack Compose Previews는 전체 빌드 없이도 UI 변경 사항을 즉시 테스트할 수 있어 UI 개발 속도를 크게 높여줍니다.
주요 기능
대화형 모드(Interactive Mode): 실제 기기처럼 UI를 실시간으로 조작할 수 있어 애니메이션, 클릭 등 상호작용을 바로 확인하고 디버깅할 수 있습니다.
애니메이션 미리보기(Animation Preview): 복잡한 애니메이션을 프레임 단위로 확인하고 미세 조정할 수 있습니다.
UI 확인 모드(UI Check Mode): 색상 대비, 텍스트 크기, 접근성(Accessibility) 등 중요한 요소를 분석하여 앱의 접근성을 향상시키는 데 도움을 줍니다.
미리보기 실행(Run Preview): 전체 앱을 빌드하지 않고도 특정 미리보기만 선택하여 실제 기기나 에뮬레이터에 배포할 수 있습니다.
핵심 권장 사항
ViewModel 직접 인스턴스화 금지: 미리보기에서 ViewModel을 직접 생성하면 UI와 비즈니스 로직이 결합되어 테스트가 복잡해집니다. 상태를 Composable 함수로 전달하는 상태 호이스팅(State Hoisting) 방식을 사용하세요.
@PreviewParameter 활용: @PreviewParameter를 사용하면 미리보기에 필요한 샘플 데이터를 효율적으로 제공하여 다양한 데이터 시나리오를 한 번에 테스트할 수 있습니다.
"스티커 시트" 생성: 여러 @Preview 주석을 활용해 컴포넌트의 다양한 시각적 상태(예: 활성, 비활성, 에러)를 한 페이지에 모아두면 시각적 문서 역할을 해 팀원 온보딩에 도움이 됩니다.
안드로이드 스튜디오의 내장 레이아웃 인스펙터(Embedded Layout Inspector)는 Jetpack Compose UI를 디버깅하는 데 필수적인 도구입니다.
이 도구를 사용하면 앱이 실행되는 동안 Running Devices Tool Window를 통해 레이아웃 계층 구조를 쉽게 검사할 수 있습니다. 이는 UI 컴포넌트의 위치, 크기, 속성 등을 실시간으로 확인하고 디버깅하는 데 큰 도움이 됩니다.
Android 14에 도입된 SDK 런타임(SDK Runtime)은 새로운 개인정보 보호 및 보안 기술로, 제3자 SDK(런타임 사용 SDK 또는 RE SDK)를 안전한 샌드박스에서 격리합니다. 이 기술은 앱 개발자와 SDK 개발자 모두에게 중요한 변화를 가져옵니다.
SDK 런타임의 작동 방식
앱(런타임 인지 SDK 또는 RA SDK)과 격리된 RE SDK는 자동으로 생성된 "shims"를 통해 상호작용합니다. Jetpack 라이브러리는 하위 호환성을 제공하여 이전 버전의 안드로이드에서도 이러한 상호작용이 가능하도록 지원합니다.
SDK 개발자를 위한 주요 변경 사항
RE SDK를 구축하려면 상당한 변화가 필요합니다.
특정 프로젝트 구조: Android SDK Bundle (ASB)이라는 새로운 형식을 사용해야 합니다.
새로운 Gradle 구성: Privacy Sandbox 플러그인과 특수 Jetpack 종속성을 추가해야 합니다.
API 선언: 새로운 @PrivacySandboxService 및 @PrivacySandboxInterface와 같은 어노테이션을 사용하여 API를 명시적으로 선언해야 합니다.
진입점 및 UI: UI와 액티비티 실행에는 특별한 고려 사항이 적용되며, SDK의 특정 진입점을 구현해야 합니다.
이러한 변화는 안드로이드에서 SDK가 구축되고 통합되는 방식의 근본적인 전환을 의미합니다. SDK 런타임은 사용자 데이터에 대한 제어를 강화하고, 앱과 SDK 간의 보안을 높여 앱 충돌을 방지하는 등의 이점을 제공합니다. 이는 모든 안드로이드 앱 개발의 새로운 표준이 될 것입니다.
신체 센서 권한 변경
안드로이드 16부터 신체 센서 관련 권한이 세분화됩니다. 기존의 포괄적인 권한 대신, android.permission.health.READ_HEART_RATE와 같이 프라이버시를 강화한 새로운 권한을 사용해야 합니다. 심박수, 산소 포화도, 피부 온도 등 민감한 건강 데이터를 다루는 앱은 이러한 변화에 맞춰 사용자의 이익에 부합하는 사용 사례를 명시하고 새로운 권한을 적용해야 합니다.
블록체인/암호화폐 앱의 국가별 규정
블록체인 관련 콘텐츠(암호화폐 거래소/지갑 등)를 제공하는 앱을 위한 국가별 요구사항이 새로운 고객센터 글에 안내되었습니다. 이 분야의 개발자는 각 국가의 법규와 잠재적인 지역별 양식 제출 의무를 확인해야 합니다.
AI 생성 콘텐츠 모범 사례
AI가 생성한 콘텐츠가 포함된 앱을 위한 새로운 가이드라인이 발표되었습니다. 사용자 및 앱 보호를 위한 모범 사례에 초점을 맞추고 있으므로 관련 개발자들은 이를 참고해야 합니다.
콘텐츠 등급 및 광고
앱의 콘텐츠 등급은 앱 자체의 내용만을 반영합니다. 표시되는 광고 콘텐츠가 앱의 콘텐츠 등급보다 지나치게 성숙한 내용이 아닌지 확인하여 등급 기준을 준수해야 합니다.
2025년 예정된 마감 기한
사진/동영상 권한, 신용 한도, 뉴스/매거진, 건강 콘텐츠 및 서비스 등 다양한 정책의 2025년 마감 기한을 다시 한번 확인하고 준비해야 합니다.
구글 플레이가 파키스탄을 대상으로 하는 개인 대출 앱 정책을 업데이트했습니다.
대출 상환 기간이 60일 이하인 단기 개인 대출을 홍보하는 앱은 이제 일반적으로 금지됩니다. 만약 이러한 앱을 보유하고 있다면, 업데이트된 정책을 준수하는지 반드시 확인해야 합니다.
블록체인 콘텐츠(암호화폐 거래소 또는 소프트웨어 지갑 등)를 다루는 안드로이드 앱을 위해, 구글 플레이는 이제 블록체인 기반 콘텐츠 정책 고객센터(Blockchain-based Content Policy Help Center)를 제공합니다.
이곳에는 잠재적인 국가별 양식 제출을 포함하여 국가별 규정 준수 요건이 상세히 나와 있습니다. 만약 여러분의 앱이 명시적으로 나열되지 않은 지역을 대상으로 한다면, 금융 기능 선언(Financial Features declaration)에서 해당 앱을 암호화폐 거래소 또는 소프트웨어 지갑으로 선언해야 합니다.
자세한 내용은 goo.gle/blockchain-policy에서 확인할 수 있습니다.
2023년 모바일 게임 시장의 성장 둔화에 대응하기 위해 구글 플레이는 개발자를 위한 핵심 전략으로 '장르 확장(genre expansion)'을 강조하고 있습니다.
이 전략은 더 폭넓은 사용자층을 확보하고, 게임 몰입도를 높이며, 수익을 증대하기 위해 여러 장르의 게임 플레이, 수익화 방식, 또는 미적 요소를 통합하는 것을 의미합니다. (예: 4X 게임에 캐주얼 미니게임을 추가하는 방식)
이러한 장르 확장을 성공적으로 실행하기 위해서는 다음과 같은 사항에 집중해야 합니다.
초기 UA 테스트: 사용자 확보(UA, User Acquisition)를 위한 테스트를 초기 단계부터 시작하여 어떤 조합이 효과적인지 확인하세요.
플레이어 동기 이해: 새로운 요소를 추가하기 전에 플레이어가 게임을 즐기는 근본적인 이유와 동기를 깊이 이해해야 합니다.
원활한 통합: 추가된 요소들이 기존 게임과 매끄럽게 어우러지도록 통합을 최우선으로 고려해야 합니다.
플레이 콘솔 도구 활용: 스토어 등록 정보 실험이나 단계적 출시와 같은 플레이 콘솔 도구를 활용하여 효과적인 반복 작업을 진행하세요.
Google의 안드로이드 팀은 현대적인 안드로이드 게임 개발에 Vulkan과 Adaptive Performance Framework (ADPF)가 필수적이라고 강조합니다. Vulkan은 고성능 그래픽 API로, 효율성을 높이고 GPU의 고급 기능에 직접 접근할 수 있게 해줍니다. 이를 통해 최신 하드웨어의 잠재력을 최대한 활용하여 게임의 성능을 극대화할 수 있습니다.
최근 AndroidX 변경 사항에 대한 요약입니다.
치명적인 버그 수정 및 안정성 개선
Paging (3.4.0-alpha01): UI 안정성 및 데이터 로딩에 영향을 주는 몇 가지 치명적인 버그가 수정되었습니다. RecyclerView 업데이트 중 스크롤 시 발생하는 IndexOutOfBoundsException 오류와 스크롤 중 새로 고침 시 추가 로드가 트리거되지 않던 문제, 그리고 Paging 항목 새로 고침 중 스크롤 시 발생하던 충돌(crash) 현상이 해결되었습니다.
Room (2.8.0-alpha01): AndroidSQLiteDriver와 함께 일시 중단(suspending) 트랜잭션을 사용할 때 간헐적으로 발생할 수 있는 교착 상태(deadlock)가 수정되었습니다.
중요한 신규 기능 및 API 개선
WebKit (1.15.0-alpha01): WebView 제어를 위한 주요 개선 사항이 포함되었습니다.
HTTP 헤더 제어: WebView 및 서비스 워커 내 특정 오리진으로 전송되는 요청에 HTTP 헤더 이름-값 쌍을 설정하는 새로운 API(Profile.setOriginMatchedHeader)가 추가되었습니다.
향상된 쿠키 처리: 이제 개발자는 WebResourceRequest.getRequestHeaders()에 쿠키 헤더를 포함할 수 있으며, shouldInterceptRequest 콜백 내에서 WebResourceResponseCompat.setCookies의 Set-Cookie 값을 처리할 수 있습니다. 이는 가로채기(intercepted)된 WebView 요청에서 쿠키 관리 제어 능력을 크게 향상시킵니다.
렌더러 웜업(Warm-up): Profile에 대한 WebView 렌더러 프로세스를 미리 준비(warm up)하는 실험적 API가 추가되어 복잡한 WebView 생명주기에서 성능을 개선합니다.
Room (2.8.0-alpha01): androidx.room:room-sqlite-wrapper와 RoomDatabase.getSupportWrapper() 확장 함수가 도입되었습니다. 이는 SQLiteDriver로 전환하는 개발자가 여전히 SupportSQLiteDatabase 래퍼를 사용할 수 있게 하여, 기존 SupportSQLite API 사용량이 많은 코드베이스의 점진적인 마이그레이션을 용이하게 합니다.
Kotlin Multiplatform (KMP) 지원 확장
Paging (3.4.0-alpha01): watchos, tvos, mingwX64, watchosDeviceArm64, linuxArm64를 포함한 더 많은 KMP 타겟을 추가했습니다.
Room (2.8.0-alpha01) 및 SQLite (2.6.0-alpha01): 두 라이브러리 모두 이제 Watch OS 및 TV OS용 KMP 타겟을 추가했습니다.
Wear OS 관련 업데이트
Wear Remote Interactions (1.2.0-alpha01): RemoteActivityHelper.startRemoteActivity가 이제 새로운 공개 Wear SDK API(Wear 6+)를 사용합니다.
Watch Face Push (1.0.0-alpha01): watchfacepush 라이브러리는 Wear OS 앱이 워치에 워치 페이스를 프로그래밍 방식으로 설치할 수 있도록 하는 API를 도입했습니다.
기타 주목할 만한 변경 사항
SQLite (2.6.0-alpha01): SQLiteConnection에 활성 트랜잭션이 있는지 확인할 수 있는 API(SQLiteConnection.hasActiveTransaction())가 추가되어 복잡한 트랜잭션 로직을 관리하는 데 도움이 됩니다.
Test UI Automator (1.0.0-alpha01): 새로운 uiautomator-shell 라이브러리를 통해 셸 사용자로서 셸 명령을 실행할 수 있으며, 이는 테스트 및 계측 목적으로 UiAutomation#executeShellCommandRwe(API 34)를 백포트합니다.
안드로이드 개발자 백스테이지 팟캐스트가 두 개의 새로운 에피소드로 돌아왔습니다.
안드로이드 스튜디오의 제미니 기능이 크게 발전하여, 이제는 코드 디자인부터 유지보수까지 개발의 전 과정을 지원합니다.
주요 발전 사항
지능형 코드 완성: 문맥을 파악하여 코드를 완성하고, 필요한 경우 전체 함수를 제안합니다.
디자인 도구 통합: 컴포즈 프리뷰를 생성하고 자연어를 통해 UI 코드를 직접 변경하는 등 디자인 작업과의 연동이 강화되었습니다.
단위 테스트 생성: 복잡한 시나리오에 대한 단위 테스트를 자동으로 생성해 테스트 작성 부담을 줄여줍니다.
주요 신규 기능
버전 업그레이드 에이전트 (Version Upgrade Assistant): 종속성 업데이트를 자동화하고 컴파일 오류를 수정하여 개발자의 반복적이고 힘든 작업을 줄여줍니다.
에이전트 모드 (Agent Mode, 공개 프리뷰): 제미니가 사용자의 지시에 따라 IDE 내에서 직접 코드를 수정하고, 개발자가 제안된 변경 사항을 승인하는 방식으로 작동합니다. 이는 여러 파일에 걸친 복잡한 작업을 효율적으로 처리할 수 있게 합니다.
개인정보 보호
IDE 내 작동: 제미니는 IDE 내에서 작동하며, 코드 학습을 위해 외부로 전송하지 않아 개인정보를 안전하게 보호합니다.
강화된 개인정보 보호 옵션: 비즈니스 구독자를 위한 맞춤형 데이터 관리 옵션을 제공하여, 기업 환경에서도 안심하고 사용할 수 있습니다.
백업 및 복구: 데이터 손실 제로
안드로이드 스튜디오가 이제 앱 데이터 백업 및 복원 테스트를 자동화하여, 번거로운 수동 ADB 명령어를 입력할 필요가 없어졌습니다. 이로써 개발자는 기기나 에뮬레이터 간에 앱의 데이터 지속성(설정, 게임 상태, 권한)을 훨씬 쉽게 검증할 수 있습니다.
백업 범위 설정: 매니페스트를 통해 백업 범위를 구성할 수 있습니다. 클라우드 전송(최대 25MB)과 기기 간 전송(1~2GB)을 구분하여 설정 가능합니다.
커스텀 백업 디스크립터: 복잡한 시나리오의 경우, 백업 디스크립터를 맞춤 설정할 수 있습니다. 단, 민감한 데이터는 보안을 위해 백업에서 제외됩니다.
이 새로운 도구는 안정적인 데이터 전송을 테스트하고 사용자에게 끊김 없는 경험을 제공하는 데 큰 도움이 됩니다.