Upgrade to Pro — share decks privately, control downloads, hide ads and more …

What's New in Android 2026

What's New in Android 2026

Avatar for Veronikapj

Veronikapj

July 24, 2026

More Decks by Veronikapj

Other Decks in Programming

Transcript

  1. Agenda 1 개발 환경 & UI 2 성능 & 빌드

    최적화 3 AI & 지능형 에이전트 4 프라이버시 & 보안 5 미디어 & 시스템 통합 6 멀티 디바이스 생태계 Compose-First & Migration Skills 앱을 가볍게 만드는 두 방향 · 빌드 타임(R8)과 런타임(Memory Limiter) Agentic Era & Gemini Nano 4 Privacy Pickers & Credential Manager Media3 & Background Restrictions Wear OS 7 · Large Screens · XR
  2. "the Views system is now in maintenance mode" adopt Compose

    at your own pace · 전면 재작성 불필요, 신규 코드만 Compose로 Google I/O Extended
  3. 1. 개발 환경 & UI View의 현재 위치 Library Version

    Status View Toolkit: Maintenance Mode "the Views system is now in maintenance mode" RecyclerView 1.4.0 (2025.12) * 유지보수 Fragment 1.8.9 (2026.07) Stable ConstraintLayout 2.2.1 (2025.02) * 유지보수 ViewPager2 1.1.0 (2024.05) Stable DataBinding AGP 내장 (별도 버전 없음) 치명적 수정만 지원 "it will only receive updates for highly critical fixes" 신규 기능 추가 없음 더 이상의 기능 제안은 받지 않으며 버그 수정만 진행 최신 Stable 버전 기준 (2026.07) 주요 androidx 컴포넌트의 유지보수 단계 전환 현황 Google I/O Extended 출처 developer.android.com/jetpack/androidx/versions developer.android.com/develop/ui/compose/first
  4. 1. 개발 환경 & UI Styles API Modifier로 하던 스타일링을

    재사용 가능한 Style 객체로 BEFORE — Modifier chain AFTER — Style // 한 번 정의하고 Column( Modifier .padding(16.dp) .background(Blue) .clip(Shape) .border(1.dp, Gray) ) { ... } // 다른 컴포넌트에서 // 똑같이 반복... // 복붙 · 반복 Google I/O Extended val cardStyle = Style { padding(16.dp) background(Blue) } // 어디서든 재사용 Column(style = cardStyle) Row(style = cardStyle) "define a standalone Style for reusability purposes" developer.android.com/develop/ui/compose/styles/fundamentals
  5. 1. 개발 환경 & UI Styles vs Modifiers Styles가 나온

    이유 : 코드로 보기 1 재사용 단위 한 번 정의해서 여러 곳에 공유 2 속성 상속 typography·color는 자식으로 받음 // 어디서든 재사용 Column(style = card) Row(style = card) Column(style = { fontSize(16.sp) // 상속됨 }) { Text("A") // 물려받음 Text("B") // 물려받음 } 3 4 // 한 번 정의 val card = Style { background(Blue) } 역할 분리 외형은 Style, 동작은 Modifier Box(Modifier .styleable { background(Blue) } .clickable { } // 동작 ) Google I/O Extended 디자인 시스템 우리 컴포넌트에 style 파라미터 노출 @Composable fun BrandCard(style: Style) { Column(Modifier.styleable(style)) } developer.android.com/develop/ui/compose/styles/styles-vs-modifiers
  6. 1. 개발 환경 & UI Style은 Modifier와 역할 분담 "not

    everything that is a modifier can be replicated with a Style" Style Modifier 외형 · 스타일 색 · 타이포 · 패딩 등 재사용 가능한 겉모습 + 동작 · 레이아웃 · 드로잉 클릭 · 크기 · 위치 등 그대로 Modifier가 담당 공식 벤치마크 (basic_box_border_change) 77% ↓ 59% ↓ 객체 할당 실행 시간 I/O 2026 · Compose 1.1 (BOM 26.04) Google I/O Extended 아직 @Experimental 전용 세션 영상 ▶ youtube.com/watch?v=e-wIF3cmjms
  7. 1. 개발 환경 & UI 마이그레이션 도구 Background Installation XML

    → Compose 자동 변환 설치 및 커스텀 가이드 "Compose로 마이그레이션하다가, 어디서 제일 고생하셨어요?" • 터미널에 아래 명령어를 실행하여 마이그레이션 스킬을 설치합니다. • 나만의 커스텀 스킬은 프로젝트 내 .skills/ 디렉토리에 관리합니다. Google 공식 Android Skill 제공 기존의 번거로운 XML 레이아웃 코드를 최신 Jetpack Compose 코드로 안전하고 빠르게 자동 변환합니다. 도입 근거 "workflows where evaluations show LLMs underperform" # 터미널에 아래 명령어를 입력하여 실행 $ android skills add --skill=jetpack-compose Google I/O Extended developer.android.com/tools/agents/android-skills • github.com/android/skills
  8. 1. 개발 환경 & UI 컬리(Kurly)에선 이렇게 바꿔 씁니다 Migrate

    XML View to Jetpack Compose 공식 그대로 Kurly 커스텀 "a structured, 10-step methodology" · UI 변환만 담당. 아키텍처는 우리가 지킨다. 1 2 3 4 5 마이그레이션 대상 선정 6 최적의 XML 후보 식별 프로젝트·레이아웃 분석 7 구조·계층·구현 감사 계획 수립 아키텍처 방향을 MVVM 유지로 고정 기준 UI 캡처 기존 사내 스크린샷 스킬로 대체 Compose 의존성·컴파일러 설정 build.gradle 확인·sync 핵심 Google I/O 커스텀 8 대체 9 10 Compose 테마 설정 Kurly 브랜드 테마 매핑 (부분 커스텀) XML → Compose 변환 ViewModel 흐름 유지, UDF 강제 전환 차단 커스텀 마이그레이션 검증 baseline과 Preview 비교 · UI 테스트 사용처 교체 interop API로 Compose 연결 XML 코드 제거 미참조 확인 후 레거시 삭제 공식 스킬은 UI 변환만 하지만 권장 패턴이 MVI/UDF로 기울어, 계획/변환 단계에서 아키텍처가 같이 변환됩니다. → Step 3·7은 MVVM 유지로 커스텀, Step 4는 사내 스크린샷 스킬로 대체. 변환 속도↑ · 불필요한 리팩토링 차단 하도록 커스텀 Extended developer.android.com/agents/skills/jetpack-compose/migration
  9. 1. 개발 환경 & UI 스킬 목록 = 오늘 목차와

    같음 = 스킬만 봐도 핵심 변경을 쉽게 처리할 수 있다 → 1. 개발 환경 & UI Action Item r8-analyzer → 2. 성능 & 빌드 1 appfunctions → 3. AI & 에이전트 2 jetpack-compose intent-security 팀 룰로 고정 → 4. 프라이버시 & 보안 Google I/O Extended → 6. 멀티 디바이스 마이그레이션엔 Skill 적용 공식 그대로 X · 우리 아키텍처로 커스텀 .skills/ 에 팀 버전 커밋 3 wear-compose-m3 신규 화면은 Compose로 시작 우리도 절반쯤 진행 중 이 방식으로 실제 전환 중 .android.com/tools/agents/android-skills • github.com/android/skills
  10. 2. 성능 & 빌드 최적화 코드①. 내 앱이 걸렸는지 탐지

    탐지 API 핵심 포인트 ApplicationExitInfo 사용 이 종료(Memory Limiter)는 일반적인 크래시와 달리 스택 트레이스(Stack Trace)가 남지 않습니다. 따라서 반드시 ApplicationExitInfo를 통해서만 실제 종료 여부를 정확히 판정하고 크래시 리포터에 기록해야 합니다. 시스템에서 제공하는 최근 앱 종료 원인 기록을 조회하여 메모리 한도 초과 여부를 탐지합니다. code_slides.kt val am = getSystemService(ActivityManager::class.java) for (info in am.getHistoricalProcessExitReasons(packageName, 0, 0)) { if (info.reason == ApplicationExitInfo.REASON_OTHER && info.description?.contains("MemoryLimiter:AnonSwap") == true) { // 메모리 한도 초과로 종료됨. 크래시 리포터에 기록 } } Google I/O Extended 출처 developer.android.com/blog/posts/prioritizing-memory-efficiency-essential-steps-for-android-17
  11. 2. 성능 & 빌드 최적화 메모리 리미터 종료, 탐지 수단

    3가지 종료 시점 기준 역할 구분 앱 종료 종료 직전 종료 후 (다음 실행) 나중에 ① ProfilingManager ② ApplicationExitInfo ③ Play Console 언제 : 종료되기 직전 언제 : 종료 후 다음 실행 언제 : 예정 무엇 : 힙 덤프를 자동 저장 (TRIGGER_TYPE_ANOMALY) 무엇 : 종료 이유 조회 "MemoryLimiter:AnonSwap" 확인 무엇 : 필드 메모리 지표를 콘솔에 노출 용도 : 메모리가 넘친 원인 분석 용도 : 리미터 종료 확정 현재 준비 중 유일하게 확실한 방법 Google I/O Extended 출처 developer.android.com/blog/posts/prioritizing-memory-efficiency-essential-steps-for-android-17
  12. 2. 성능 & 빌드 최적화 코드②. 로컬에서 테스트 로컬 검증

    & 시뮬레이션 🛡 방어 팁 (Defensive Tip) adb 명령어로 메모리 제한 동작을 시뮬레이션합니다. terminal # 메모리 한도를 조정하거나 무시해서 동작을 시뮬레이션 $ adb shell am memory-limiter ignore <uid|all|none> Google I/O Extended onTrimMemory() 구현 시스템 메모리가 부족할 때 앱이 스스로 불필요한 자원을 반납하여 OOM 종료를 능동적으로 방지합니다. 핵심 콜백 : • TRIM_MEMORY_UI_HIDDEN UI가 더 이상 사용자에게 보이지 않을 때 비트맵 캐시 등을 정리 • TRIM_MEMORY_BACKGROUND 백그라운드 프로세스로 전환 시 캐시 자원을 자진 반납 출처 developer.android.com/about/versions/17/behavior-changes-all#app-memory-limits
  13. 2. 성능 & 빌드 최적화 이미지 로딩 최적화 - Profiler

    힙 덤프 🔍 Profiler 힙 덤프 분석 💡 이미지 메모리 분석 & 체크리스트 [cite: 17] Profiler를 통해 메모리에 중복 로드된 Bitmap 객체와 크기를 직관적으로 확인하고 최적화할 수 있습니다. ⚠ 메모리 점유의 주범 • 대부분의 모바일 메모리 문제는 Bitmap에서 발생합니다. • 100KB 압축 이미지도 디코딩 시 픽셀 크기와 색 depth로 수 MB RAM을 차지합니다. [cite: 17] ✅ 최적화 체크리스트 • 추천 라이브러리: Coil (Kotlin/Compose), Glide (Java) • 다운샘플링: 실제 뷰 크기에 맞게 조절하여 디코딩 • RGB_565: 투명이 불필요하면 ARGB_8888의 절반 메모리 • 중복 비트맵 제거: Profiler 힙 덤프 경고 확인 ⚠ Google I/O Extended 출처 developer.android.com/static/blog/assets/pic3_IO_26_113_TSV_dup_bitmaps_cropped_0b5bed0efb_Z1vcMMk.webp
  14. 2. 성능 & 빌드 최적화 R8 Configuration Analyzer ⚡ R8

    & Full Mode 최적화 R8의 keep 규칙 정리만으로도 대규모 최적화가 가능합니다. full R8(full mode) 활성화 시 한층 공격적인 최적화를 수행합니다. (AGP 기본값, fullMode=false 지우면 활성화) 📈 실제 도입 효과 (Monzo 적용 사례) • ANR 35% 감소 (응답 없음 비율 대폭 개선) • 콜드 스타트 속도 30% 향상 • 앱 최종 설치 크기 9% 절감 📊 분석 및 리포트 확인 • 3대 성능 지표 점수화: Shrinking, Optimization, Obfuscation 비율 분석 $ ./gradlew :app:analyzeReleaseR8Config Google I/O Extended 출처 developer.android.com/static/blog/assets/pic2_r8_config_analyzer_87a3feafc8_ZUSazT.webp developer.android.com/topic/performance/app-optimization/r8-configuration-analyzer developer.android.com/blog/posts/monzo-boosts-performance-metrics-by-up-to-35-with-a-simple-r8-update
  15. 2. 성능 & 빌드 최적화 R8 full mode 주의점 (리플렉션)

    ⚠ R8 full mode 주의점 (리플렉션) 💻 build.gradle 설정 공격적인 최적화를 수행하는 full mode 환경을 build.gradle 파일에 활성화하고 최적화 규칙을 올바르게 적용합니다. 🚨 주요 부작용 (Side Effects) • 공격적 최적화 → 리플렉션 깨짐 (ClassNotFoundException, NoSuchMethodException 발생 가능) code_slides.kt (build.gradle) • Signature 미보존으로 인한 Gson 역직렬화 실패 isMinifyEnabled = true (Gson 2.11+는 자체 번들로 해결 가능) isShrinkResources = true • 기본 생성자 미보존 (newInstance()용 keep 규칙 필요) • 접근 제어자 변경 (private → public) // proguard-android-optimize.txt 사용 // (legacy proguard-android.txt 아님) (visiability 의존코드 주의) ✅ 권장 대응 방안 (Recommendations) • full mode 활성화 후 반드시 전체 회귀 테스트 진행 • 사용 중인 외부 라이브러리 최신 버전 업데이트 유지 Google I/O Extended 출처 developer.android.com/topic/performance/app-optimization/full-mode
  16. 2. 성능 & 빌드 최적화 내일 할 일 (Action Item)

    🛠 r8-analyzer (R8 Agent Skill) 역할 및 핵심 기능 Android Studio 에이전트나 AI 도구가 R8 설정 오류를 해결하고 keep 규칙을 정교화하도록 돕는 공식 스킬 설치 및 적용 $ android skills add --skill=r8-analyzer ⚠ 주의 사항 AI 제안은 반드시 기술 검증이 필요합니다. 📋 실천 과제 (Action Items) • R8 분석 점수 확보 및 기록 ./gradlew :app:analyzeReleaseR8Config 실행 후 대시보드 기록 • 메모리 감지 로직 추가 크래시 리포터에 "MemoryLimiter:AnonSwap" 감지 적용 • Android 17 동작 사전 검증 adb shell am memory-limiter 활용한 선행 테스트 • keep 규칙 정리 및 반영 r8-analyzer 제안 분석 후 검증을 거쳐 최종 반영 "Insights from AI-driven skills will require technical verification" Google I/O Extended 출처 github.com/android/skills/tree/main/performance/r8-analyzer
  17. 03 AI & 지능형 에이전트 Agentic Era & Gemini Nano

    4 Android는 이제 지능형 시스템 • Android가 intelligence system으로 • "connect your app to the intelligence system"
  18. 3. AI & 지능형 에이전트 앱을 바라보는 관점의 전환 사용자가

    UI를 직접 조작하던 앱에서, 에이전트가 호출하는 앱으로 지금까지 앞으로 사용자가 UI를 단계별로 직접 조작 앱이 기능을 tool로 노출 "manual navigation with your UI" "orchestratable tools" 사용자는 자연어로 목표를 말하고, 에이전트가 앱 함수를 호출 "through agents and system-level interactions" Google I/O Extended developer.android.com/ai/appfunctions
  19. 3. AI & 지능형 에이전트 앱을 에이전트에 연결하는 두 경로

    우리 앱 기능이 Gemini의 tool이 됨 개념 = 온디바이스 MCP 제대로 붙이려면 AppFunctions, 코드 못 건드리면 Computer Control 에이전트 Gemini · 어시스턴트 ① AppFunctions ② Computer Control 능동 통합 앱이 기능을 tool로 정의해 노출 코드 변경 없이 UI 자동화 • 온디바이스 MCP 서버처럼 동작 • 에이전트가 그 tool을 직접 호출 • OEM 탑재 어시스턴트가 화면 조작 • 접근성 시맨틱에 의존 코드 작업 필요 · 통제력 높음 · 정밀 폴백 코드 작업 불필요 · 즉시 대응 · 간접 내앱 Google I/O Extended developer.android.com/ai/appfunctions · /ai/computer-control
  20. 3. AI & 지능형 에이전트 App Functions 동작 흐름 앱

    기능이 에이전트의 tool로 노출되고 실행되는 4단계 1 2 3 4 선언 스키마 생성 조회 실행 함수에 @AppFunction 애노테이션 + KDoc • Jetpack이 스키마 생성 에이전트가 사용 가능한 함수를 쿼리 프롬프트에 맞는 함수를 파라미터와 함께 실행 • OS가 인덱싱 KDoc = tool 설명 구현은 어노테이션 한 줄 Gemini 연동은 아직 preview (AICore) · Android 16+ · EXECUTE_APP_FUNCTIONS 권한 Google I/O Extended developer.android.com/ai/appfunctions
  21. 3. AI & 지능형 에이전트 Gemini Nano 4 : 최대

    4배 빠르게 BASE MODEL PERFORMANCE EFFICIENCY Gemma 4 4x 빠름 60% 절감 이전 세대 대비 최대 4배 속도 향상 기기 배터리 소모 최대 60% 절약 "up to 4x faster" "up to 60% less battery" 구글의 최신 오픈 모델 Gemma 4를 베이스로 설계된 차세대 온디바이스 AI 모델 Next-generation on-device Google I/O Extended 출처 developer.android.com/ai/gemini-nano developer.android.com/blog/posts/gemma-4-the-new-standard-for-local-agentic-intelligence-on-android
  22. 3. AI & 지능형 에이전트 Gemini Nano 4 조건 SYSTEM

    REQUIREMENT DEVELOPER PREVIEW 12GB RAM AICore 대상 기기 제한적 "12GB RAM required" Google I/O Extended AICore Developer Preview로 선체험 "Early access via AICore" 출처 developers.google.com/ml-kit/genai/aicore-dev-preview
  23. 3. AI & 지능형 에이전트 내일 할 일 ① :

    tool 후보 목록화 TASK 01 TASK 02 도메인 정리 AppFunction 에이전트에 노출할 기능을 도메인 단위로 체계적이고 직관적으로 분류하여 정리합니다. 잘 분리된 유스케이스 = AppFunction 후보 Google I/O Extended 출처 github.com/android/skills/tree/main/device-ai/appfunctions
  24. 3. AI & 지능형 에이전트 내일 할 일 ② :

    접근성 시맨틱 정비 TASK 03 NEXT STEP 시맨틱 정비 프라이버시 & 보안 Computer Control 대비를 위한 정밀한 접근성 레이어 및 시맨틱 요소 정비 다음 장에서 다룰 고른 데이터만 안전하게 제공받는 프라이버시 핵심 설계 Google I/O Extended
  25. 4. 프라이버시 & 보안 권한 요청 대신, 고른 것만 받는다

    AS-IS TO-BE (핵심) 전체 권한 요청 고른 것만 전달 미디어, 연락처 등 전체 라이브러리에 접근하기 위해 앱이 광범위한 권한을 직접 요청하고 승인받던 기존 방식 권한 요청 없이 시스템 표준 선택기(Picker)를 통해 사용자가 직접 선택한 특정 데이터만 앱에 안전하게 제공 Google I/O Extended 출처 developer.android.com/privacy
  26. 4. 프라이버시 & 보안 필수 Contact Picker (I/O 2026 신규)

    01Android 17 표준 UI 새로운 OS 수준의 표준 연락처 선택기를 제공하여 일관성 있고 직관적인 사용자 경험을 보장합니다. 02선택적 데이터 전달 불필요한 전체 권한 요청 없이, 사용자가 안전하게 지정하여 선택한 특정 연락처 정보만 앱에 공유합니다. Google I/O Extended 출처 developer.android.com/about/versions/17/features/contact-picker
  27. 4. 프라이버시 & 보안 필수 Contact Picker : 정책 데드라인

    POLICY BACKGROUND 01 연락처 권한 사용 기능 목록화 새로운 Contact Permissions 정책 현재 서비스 내에서 연락처를 사용하는 모든 기능 리스트업 (Android 17+ 타깃 앱 대상) CORE PRINCIPLE Picker로 구현 가능한 기능은 READ_CONTACTS 권한 금지 02 Contact Picker 대체 "연락처 하나 골라 공유·초대" 유형은 전용 Picker로 전환 03 READ_CONTACTS 예외 선언 Picker 로 핵심 기능을 제공하기 충분치 않은 경우에만 Play Console 사유 제출 Google I/O Extended 출처 support.google.com/googleplay/android-developer/answer/16935362
  28. 4. 프라이버시 & 보안 필수 SMS OTP 대응 01 일반

    SMS OTP 수신 지연 수신 후 최대 3시간 지연 발생 가능으로 인해 사용자 인증 자동입력 흐름 깨짐 02 SMS Retriever (완전 자동) SMS 권한 획득 없이 앱 해시가 포함된 인증용 문자를 자동으로 즉시 수신 처리 03 SMS User Consent (원클릭 동의) 1회 동의 과정을 통해 단일 메시지 전달, 템플릿과 무관하게 자유로운 문자 형식 지원 Google I/O Extended 출처 developer.android.com/about/versions/17/behavior-changes-17 developer.android.com/identity/sms-retriever
  29. 4. 프라이버시 & 보안 필수 BAL(Background Activity Launch) 제약 강화

    01 BAL 개념 및 취약점 사용자 개입 없이 백그라운드 앱이 화면을 띄우는 기능으로, 피싱 및 화면 가로채기 공격에 악용될 수 있습니다. code_slides.kt // setPendingIntentBackgroundActivityStartMode : API 34+ // MODE_..._ALLOW_IF_VISIBLE : SDK 36(Android 16)+ val options = ActivityOptions.makeBasic() .setPendingIntentBackgroundActivityStartMode( // 예전: MODE_BACKGROUND_ACTIVITY_START_ALLOWED (deprecated) // 권장: 호출 앱이 화면에 보일 때만 허용 02 Android 17 변경 사항 기존의 무조건적인 백그라운드 실행 허용 모드가 deprecated 처리되며, 보안 강화를 위해 권한이 크게 제한됩니다. ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE ) // send(...) : API 23+ pendingIntent.send(context, 0, intent, null, null, null, options.toBundle()) 03 대응 및 권장 구현 PendingIntent 발송 시 ActivityOptions 모드를 호출 앱이 화면에 보일 때만 허용하는 권장값으로 반드시 교체해야 합니다. Google I/O Extended 출처 developer.android.com/about/versions/17/behavior-changes-17
  30. 4. 프라이버시 & 보안 주의 Local network & CT 01

    Local Network 권한 요구 02 CT (인증서 투명성) 기본 활성화 로컬 네트워크 상의 주변 기기들과 안전하게 통신하기 위한 보안 제약이 강화됩니다. TLS 인증서를 공개 로그에 등록 및 검증하도록 강제하여 인증서 위조를 원천 차단합니다. • • Google I/O LAN 기기(캐스팅, 스마트홈 디바이스 등)와 통신 시 필수 권한 요구 ACCESS_LOCAL_NETWORK 권한 획득 필요 Extended ⚠ 자체 인증서 및 피닝 사용 시 주의 사내망 자체 인증서나 SSL 피닝(Pinning) 적용 앱의 경우, 공개 로그 미등록으로 인해 연결이 유실될 수 있으므로 반드시 사전 점검이 필요합니다. 출처 developer.android.com/about/versions/17/behavior-changes-17
  31. 4. 프라이버시 & 보안 권장 Photo Picker : 권한 없이

    01 Embedded Photo Picker 권한 팝업 없이 사용자가 선택한 사진만 안전하게 앱에 전달합니다. 02 클라우드 라이브러리 연동 기기 로컬 사진뿐만 아니라 클라우드(Google Photos) 라이브러리까지 확장하여 접근할 수 있습니다. Google I/O Extended 출처 developer.android.com/blog/posts/the-embedded-photo-picker
  32. 4. 프라이버시 & 보안 권장 Embedded Photo Picker 핵심 요약

    01 개념 & 핵심 강점 앱 UI 안에 직접 넣는 사진 선택기로, 화면 전환 없이 내 화면 안에서 선택할 수 있습니다. • 연속 선택 (Continuous): 선택기를 닫지 않고 선택/선택 해제가 가능하며 앱 UI 상태와 실시간 동기화 • 안전한 무권한 렌더링: SurfaceView 기반 렌더링으로 보안성 및 권한 불필요 특징 유지 02 기기 요건 & 통합 Android 14 (API 34) + SDK Extensions 15 이상 대상. 미충족 기기는 Play 서비스를 통해 백포트 제공. • Compose (권장): EmbeddedPhotoPicker 컴포저블 제공 및 상태/콜백 제어 • Views 방식: EmbeddedPhotoPickerView 사용 및 세션 제어 03 맞춤설정 범위 FeatureInfo 객체를 통해 앱의 UX 및 디자인 아이덴티티에 완벽하게 결합할 수 있습니다. • 강조 색상 지정: setAccentColor() 사용 (기본은 시스템 다이내믹 컬러 적용) • 크기 및 필터링: 높이 제한, 최대 선택 개수 지정, 사전 선택 URI 및 MIME 타입 필터 지원 Google I/O Extended 출처 developer.android.com/training/data-storage/shared/photo-picker/embedded
  33. 4. 프라이버시 & 보안 권장 Credential Manager : 로그인 통합

    + Conditional Creation 01 로그인 통합 비밀번호, 패스키, 소셜 로그인을 하나의 API로 간편하게 통합하여 제공합니다. 02 Conditional Creation 기존 비밀번호 유저에게 로그인 흐름 방해 없이 패스키를 백그라운드에서 자동으로 생성합니다. Google I/O Extended 출처 developer.android.com/identity/sign-in/credential-manager
  34. 4. 프라이버시 & 보안 프라이버시·보안 우선순위 🔴 필수 🟡 조건부

    🟢 개선 • Contact Picker • Local network • Photo Picker • CT arrow_ • Credential Manager arrow_ • SMS OTP • BAL 모드 ⏱ 시한 ➡ 다음 단계 Play API 37 target 상향 전 (Play Console 확인) 미디어와 시스템 통합 Google I/O Extended
  35. 5 미디어 & 시스템 통합 Media3 & Background Restrictions Android

    17 미디어 툴킷 강화 CameraX(캡처)와 Media3(재생·후처리)의 연동 고도화 백그라운드 제약 강화 백그라운드 오디오 제약 강화 및 사용자 비의도적 동작 제약 대응
  36. 5. 미디어 & 시스템 통합 권장 엔드투엔드 미디어 파이프라인 촬영

    → 편집·후처리 → 재생 → 캐스팅, 하나의 연결된 파이프라인 01촬영 (CameraX) Low Light Boost (저조도 실시간 보정) · CameraXViewfinder 02후처리 (Media3 AI Effects) Enhance · Magic Eraser · Studio Sound 03재생 (ExoPlayer) PreloadManager 즉시 재생 · Scrubbing 🎥 세션 영상 QR : youtu.be/Ch1EwR18Dqc Google I/O Extended 출처 youtu.be/Ch1EwR18Dqc developer.android.com/blog/posts/17-things-to-know-for-android-developers-at-google-i-o developer.android.com/media/camera/lowlight/low-light-boost-ae developer.android.com/blog/posts/brighten-your-real-time-camera-feeds-with-low-light-boost
  37. 5. 미디어 & 시스템 통합 권장 Media3 PreloadManager : 즉시

    재생 💡 핵심 개념 "미리 · 거리순 · 단계적" 준비로 전환 시 지연 시간 없음 🔄 근본 흐름 (DefaultPreloadManager) 01후보 등록 (add) 후보 영상들을 매니저에 사전 등록 02우선순위 산정 현재 재생 위치 기준 거리로 우선순위 계산 setCurrentPlayingIndex → invalidate 📈 도입 성과 (공식 사례) 03단계별 버퍼링 소스 준비 → 트랙 선택 → N초 구간 버퍼링 04미디어 소스 재사용 재생 시 새로 생성하지 않고 MediaSource를 꺼내서 즉각 사용 Google I/O Extended Facebook Playback Start 속도 개선 & Stall Rate 감소 BedSection 감소, WatchTime 증가 Instagram Join Latency(Action ~ 첫 프레임) 제거 → 시청 시간 & 인게이지먼트 향상 💡 FB는 현재 영상만, IG Reels는 앞뒤 인접 영상까지 프리로드 출처 developer.android.com/blog/posts/instagram-and-facebook-deliver-instant-playback-and-boost-user-engagement-with-media3-preload-manager
  38. 5. 미디어 & 시스템 통합 권장 그 외 Media3 📷

    CameraXViewfinder ⚙ CodecDB Android 17 신규 폴더블 · 태블릿 기기의 카메라 프리뷰 화면에 자동으로 대응합니다. 기기 칩셋별 최적의 인코딩을 추천하여 비디오 내보내기(export) 품질의 편차를 줄입니다. ⏯ ExoPlayer Scrubbing Mode 🔄 Transformer & CastPlayer 미디어 탐색(seek) 과정에서 매우 부드러운 프레임 갱신과 정교한 탐색 환경을 보장합니다. 고성능 멀티 애셋(multi-asset) 편집 환경과 끊김 없는 고품질 캐스팅 전송 기능을 제공합니다. Google I/O Extended 출처 developer.android.com/media/camera/camerax/preview developer.android.com/blog/posts/17-things-to-know-for-android-developers-at-google-i-o developer.android.com/media/media3/exoplayer developer.android.com/media/media3/transformer
  39. 5. 미디어 & 시스템 통합 필수 백그라운드 오디오 제약 강화

    : 무엇이 제한되나 🚫 주요 제한 사항 ⚙ 허용 조건 & 예외 사항 사용자 의도 없이 백그라운드에서 오디오를 재생하거나, 오디오 포커스를 요청하거나, 볼륨을 변경하는 모든 동작이 차단됩니다. • 필수 조건 화면에 앱이 보이거나, 적절한 포그라운드 서비스가 활성화되어 있어야 합니다. • 구현 가이드 (API) mediaPlayback 타입 포그라운드 서비스(while-in-use 권한 필요) → 실무에서는 Media3 MediaSessionService 사용을 강력 권장 • 예외 시나리오 🎯 도입 목적 exact alarm 권한 + USAGE_ALARM 스트림 지정 시 제한 없이 정상 동작합니다. 오디오가 멈췄다가 몇 시간 뒤 갑자기 재생되는 등, 사용자 경험을 저해하는 버그성 백그라운드 동작을 원천적으로 예방합니다. Google I/O Extended 출처 developer.android.com/about/versions/17/changes/bg-audio
  40. 5. 미디어 & 시스템 통합 권장 해결책 : MediaSessionService code_slides.kt

    class PlaybackService : MediaSessionService() { private var session: MediaSession? = null 💡 백그라운드 재생 해결책 override fun onCreate() { super.onCreate() val player = ExoPlayer.Builder(this).build() session = MediaSession.Builder(this, player).build() } override fun onGetSession(...) = session 01. 미디어 재생 통합 관리 Media3의 MediaSessionService를 활용하여 안정적인 백그라운드 재생 환경을 구축합니다. 02. 생명주기 자동화 override fun onDestroy() { session?.run { player.release(); release() } session = null super.onDestroy() } 라이브러리가 복잡한 서비스 생명주기를 대신 처리하므로, OS 하드닝 정책의 영향을 거의 받지 않습니다. 03. 표준 기반의 방어 안드로이드 표준 라이브러리를 채택하는 것 자체가 가장 확실하고 안전한 방어 대책입니다. Google I/O Extended } // Manifest: <service android:foregroundServiceType="mediaPlayback" ...> // + FOREGROUND_SERVICE_MEDIA_PLAYBACK 권한 출처 developer.android.com/media/media3/session/background-playback developer.android.com/about/versions/17/changes/bg-audio
  41. 5. 미디어 & 시스템 통합 Media3로 표준화하면 얻을 수 있는

    것들 📦 미디어 표준화 ⚡ 핵심 기능 개선 🛡 플랫폼 하드닝 방어 Media3 (ExoPlayer) Preload & Scrubbing OS 제약 원천 차단 영상 재생 라이브러리를 안드로이드 표준인 Media3(ExoPlayer)로 통합하여 파편화된 재생 엔진을 단일 파이프라인으로 구축합니다. PreloadManager를 활용한 영상 빠른 로딩과 정밀한 Scrubbing UI 탐색 기능을 탑재하여 재생 성능과 UX를 한층 끌어올립니다. 지속적으로 강화되는 OS 수준의 백그라운드 오디오 및 비디오 재생 제약 정책에 대해, 표준 라이브러리 기반으로 완벽 대응합니다. Google I/O Extended
  42. 6 멀티 디바이스 생태계 Wear OS 7 · Large Screens

    · XR Adaptive by Default 하나의 앱으로 다양한 디바이스 생태계에 맞춰 확장 폰 폴더블 차 XR 태블릿 Googlebook 출처 developer.android.com/adaptive-apps
  43. 6. 멀티 디바이스 생태계 대화면 : 왜 지금인가 📈 대화면

    기기 5.8억+ 대 지속적으로 성장하며 주류가 된 글로벌 대화면 디바이스 생태계 💰 압도적인 멀티 디바이스 유저 지출 폰 전용 유저 대비 평균 지출 9배 · 폴더블 최대 14배 · 대화면 약 5배에 달하는 높은 비즈니스 가치 (Google 내부 데이터 2026) 🏅 Play "Optimized for large screens" 신규 배지 adaptive 품질 기준 충족 시 전용 배지 마킹을 부여하여, 유저가 고품질 앱을 더욱 쉽고 빠르게 발견할 수 있도록 지원 💡 결론: adaptive로 개발하면 시장과 발견성 기회를 모두 선점합니다. Google I/O Extended 출처 developer.android.com/blog/posts/adaptive-development-for-the-expanding-android-ecosystem
  44. 6. 멀티 디바이스 생태계 권장 대화면 : Adaptive by Default

    📱 창 크기 적응 (Window Size Class) 하나의 Compose 앱이 다양한 화면 크기에 맞춰 동적으로 레이아웃 적응 🚀 I/O '26 신규 레이아웃 & API Grid / FlexBox 레이아웃, Navigation 3(Scene Decorators), MediaQuery API 지원 ⌨ 대화면 입력 제어 기술 화면 제어를 넘어 Compose 1.11의 마우스급 트랙패드 지원 및 포커스 링 도입 💻 테스트 환경 확장 (Googlebook) 신규 랩톱까지 무료 지원하며 Android Studio Canary 데스크톱 에뮬레이터 제공 Google I/O Extended 출처 developer.android.com/adaptive-apps
  45. 6. 멀티 디바이스 생태계 필수 대화면 : Android 17 resizability

    🎯 타깃 및 영향 범위 Android 17(API 37) 타깃 시 대화면에서 방향·비율 제한 무시 (opt-out 제거) ⚠ 미적용 시 발생하는 문제 UI 깨짐, 세로 고정 늘어남·잘림, 카메라 왜곡, 회전 시 상태 손실 💡 우회 방법 및 예외 사항 개발자 opt-out 불가. 사용자 opt-in 기기설정 예외는 게임/폰(sw <600dp)뿐 → adaptive 개발이 필수 🚫 무시되는 설정 속성 screenOrientation, resizableActivity, min/maxAspectRatio, setRequestOrientation() Google I/O Extended 출처 developer.android.com/about/versions/17/changes/ff-restrictions-ignored
  46. 6. 멀티 디바이스 생태계 권장 Wear OS 7 🔋 효율적인

    성능 및 OS Android 17 기반 최적화 및 이전 세대(Wear OS 6) 대비 배터리 소모 최대 10% 절감 ⌚ 위젯 및 실시간 정보 업데이트 Wear Widgets 도입 (2x1·2x2 타일 확장) Live Updates (실시간 업데이트 폰→워치, Ongoing Activities 대체)로 즉각적인 정보 제공 🤖 Gemini 인공지능 & 에뮬레이터 일부 기기 대상 온디바이스 Gemini Nano v3 지원, 개발용 Canary 에뮬레이터 즉시 제공 및 하반기 출시 Google I/O Extended 출처 developer.android.com/blog/posts/what-s-new-in-wear-os-7
  47. 6. 멀티 디바이스 생태계 관망 Android XR : 관망하되 준비

    🛠 개발자 프리뷰 및 SDK Developer Preview 4 : SceneCore · ARCore for Jetpack XR 곧 Beta · Unreal/Godot 공식 지원 🕶 하드웨어 지원 Catalyst 프로그램 (XREAL Project Aura, 디스플레이/오디오 글래스 키트) 🚀 지금 해야 할 일 XR 개발은 이르지만, Compose · adaptive · 접근성이 곧 XR 준비 Google I/O Extended 출처 developer.android.com/blog/posts/updates-to-the-android-xr-sdk-introducing-developer-preview-4
  48. 6. 멀티 디바이스 생태계 오늘의 6개 토픽 정리 01 Compose

    First 02 성능 (Performance) 03 AI 기술 도입 View 유지보수 모드, Compose가 기본 · 마이그레이션은 우리 것으로 튜닝한 Skill R8 Analyzer로 최적화 점수 · Android 17 Memory Limiter는 ApplicationExitInfo로 탐지 앱이 에이전트에 기능 노출(App Functions) · 온디바이스 Gemini Nano 4 04 보안 강화 🔴 05 미디어 표준화 06 멀티 디바이스 🔴 권한 대신 Picker(Photo/Contact) · Android17 필수(SMS OTP·BAL·CT) Media3 표준화 = PreloadManager 개선 + 백그라운드 제약 방어 Adaptive by Default · 대화면 리사이저빌리티 필수 대응 결론 (Conclusion) Compose로 제대로 만들어두면 성능도, 보안 대응도, 여러 기기도 대응 가능 Google I/O Extended 내일의 할 일 (Next Steps) Android 17 대응 우리 앱에서 가장 시급한 🔴 필수 항목부터 즉시 준비