프레임워크로, 간결한 Kotlin 코드를 사용하여 Android 앱의 사용자 인터페이스를 빠르고 효율적으로 구축할 수 있게 해줍니다. 2.Multi-device 사용자가 단일 기기에 묶이지 않고 태블릿, 워치, 스마트 TV 등 다양한 안드로이드 기기 간에 유기적으로 연결되고 확장될 수 있게 돕습니다. 3.Gemini Google이 개발한 강력한 AI 모델로 온디바이스 AI 기능부터 복잡한 클라우드 기반 처리까지 Android 기기 전반에 걸쳐 지능적인 기능을 구현하고 사용자 경험을 혁신합니다. 4.KMP 하나의 Kotlin 코드베이스로 Android, iOS, 웹 등 다양한 플랫폼에서 재사용 가능한 코드를 작성하여 개발 효율성을 극대화하는 프레임워크입니다 . Hot Trend in Android
위치에 대한 가시성 구현. • 유사한 `onGloballyPositioned` 는 이미 위치 추적에 사용 중. 그렇지만 `onLayoutRectChanged`를 사용하면 좀 더 뛰어난 성능을 체험할 수 있음. • throttle, debounce 추가 가능 Visibility tracking
Use Digital Credentials with your verification logic val getCredentialResponse = credentialManager.getCredential(context, getCredentialRequest) Digital Credential
val = getCredentialRequest = GetCredentialRequest(listOf(restoreCredentialOption)) // credentialManager 객체에서 createCredential() 메서드 호출합니다 val credentialManager = CredentialManager.create(context) // 생성된 이 복원 사용자 인증 정보는 webauthn 사용자 인증 정보 유형이며 복원키라고 합니다. val response = credentialManager.createCredential(context, createRestoreRequest) Restore Credential
GetRestoreCredentialRequest 객체를 생성합니다. val options = GetRestoreCredentialOption(authenticationJson) val getRequest = GetCredentialRequest(listOf(options)) // restore key 두 가지 시나리오에서 가져올 수 있습니다. // 1. 기기에서 앱을 처음 실행할 때 복원 키를 가져옵니다. // 2. onRestore 콜백에서(앱이 백업 에이전트를 구현하는 경우) val response = credentialManager.getCredential(context, getRequest) Restore Credential
개인정보를 침해하지 않으면서 사용자 데이터에 접근할 수 있는 표준 마련이 목적 • Privacy Sandbox의 핵심은 device identifier에 대한 접근 권한을 제공하지 않고도 모바일 광고, 마케팅 측정 및 추적을 허용하도록 설계되었습니다. Privacy Sandbox
Google Play 서비스가 제공하는 재설정 가능한 고유 식별자입니다. 안드로이드 기기마다 할당되며, 사용자가 직접 재설정하거나 광고 개인설정 옵션을 끌 수 있습니다. 하지만 기본적으로는 활성화되어 있었고, 앱과 광고 SDK는 이 광고 ID를 통해 사용자를 추적하고 데이터를 연결했습니다. 광고 id 및 데이터 수집 : 광고 id / 기기정보(기기모델,OS버전, 화면해상도, ip주소 등 기본적인 기기정보), 앱 사용 데이터(현재 사용중인 앱 정보, 특정 활동(게임 레벨업, 상품 검색 및 구매), 위치 권한이 있다면 위치 정보 Privacy Sandbox
개인화 수준을 높였지만 프라이버시 침해 문제 발생 ◦ 광고 id를 통해 사용자의 다양한 개인 정보 침해 가능성 ◦ 사용자의 데이터가 어떻게 사용되는지 파악 불가능광고 ID 재설정이나 개인 맞춤 광고 거부 옵션이 있지만 사용자가 모르는 경우 빈번 Privacy Sandbox
36 new API • 토글 하나로 Device Protection 기능 on/off 가능. • AAPM은 위험에 노출된 사용자를 위해 Android 기기의 보안을 강화하는 것을 목표로 하는 새로운 기능입니다. 기기 보호를 강화하도록 설계된 사전 결정된 구성 세트를 구현하는 단일 설정으로 작동합니다. Android Advanced Protection Mode
◦ 도난 감지 잠금: 도난을 암시하는 의심스러운 활동이 감지되면 기기가 자동으로 잠깁니다. ◦ 오프라인 기기 잠금: 잠금 해제된 기기가 장시간 오프라인 상태일 경우 자동으로 잠깁니다. ◦ 비활성 재부팅: 기기가 72시간 동안 잠긴 경우 자동으로 다시 시작됩니다. ◦ USB 보호: 장치가 잠금 상태일 때 새로운 USB 연결에 대해서만 충전을 기본 설정하여 USB 포트를 악용하려는 물리적 공격을 차단합니다. Android Advanced Protection Mode
Google Play Protect: Android에 원치 않는 소프트웨어 차단 기능입니다. ◦ 알 수 없는 앱: 사전 설치된 앱 스토어에서만 다운로드할 수 있습니다. ◦ 메모리 태깅 확장(MTE): 기기에서 지원되는 앱의 경우 MTE가 자동으로 활성화됩니다. Android Advanced Protection Mode
2G 네트워크 보호: 기기가 더 이상 2G 네트워크에 연결되지 않습니다. ◦ 안전하지 않은 네트워크 자동 재연결 비활성화: 기기가 더 이상 안전하지 않은 것으로 알려진 Wi-Fi 네트워크에 자동으로 재연결되지 않습니다 Android Advanced Protection Mode
boolean isAdvancedProtectionEnabled(); // Be alerted when status changes public void registerAdvancedProtectionCallback(Executor executor, Callback callback); public void unregisterAdvancedProtectionCallback(Callback callback); } public class Callback() { // Called when advanced protection state changes void onAdvancedProtectionChanged(boolean enabled); } Android Advanced Protection Mode
One UI 7.0 지원 신원 확인을 요청하는 데 사용됩니다. 신원 확인은 장치가 신뢰할 수 있는 장소 외부에 있을 때 민감한 표면에 접근하기 위해 3등급 생체 인증이 필요한 기능입니다. 도난당한 스마트폰이라 할지라도 도둑이 PIN이나 비밀번호를 알고 있다고 해도 중요한 정보에 접근하거나 보안 기능을 무력화하는 것을 막기 위함입니다. Identity Check
복잡성 감소 단일 API 세트를 사용하여 사용자의 건강/피트니스 데이터에 엑세스하여 효율성 증대 표준화된 데이터 스키마 다양한 앱과 기기에서 데이터를 읽고 쓰고 집계 중앙 집중식 개인 정보 보호 설정 수십억 사용자를 위한 더 나은 환경을 빌드하여 사용자가 데이터에 대한 엑세스 권한을 세분화하여 쉽게 제어 및 관리
// permission 체크 val isBackgroundReadPermitted = PERMISSION_READ_HEALTH_DATA_IN_BACKGROUND in healthConnectClient.permissionController.getGrantedPermissionons() // 최종 확인 val canBackgroundRead = isBackgroundReadAvailable && isBackgroundReadPermitted Medical Records APIs
SDK 36부터 해당합니다. 2 No Games 게임은 해당 설정에 예외입니다. 3 Big Screens 앞서 설명한 것과 같이 300dp 이상인 screen에서 적용이 됩니다. 4 User Option 사용자가 원하지 않는 경우 이를 사용하지 않을 수 있습니다. 5 Opt-Out 일시적으로 사용 중지할 수 있습니다.
App 외부에서도 편리하게 이용 가능 • Compose를 기반으로 App Widget 개발 Widget - Jetpack Glance https://github.com/android/platform-samples/blob/main/sample s/user-interface/appwidgets/screenshots/ActionListLayout.png
Auto exposure mode 도입했지만 Auto exposure mode 기능이 없는 기기에서는 사용 불가능. 그렇기에 Google Low Light Boost 도입. 사진을 컴퓨터적으로 계산 (computational photography)하고 ML 활용하여 카메라 밝기를 실시간 및 동적으로 조절 Google Low Light Boost
DefaultPreloadManager.Builder(context, targetPreloadControl) // Create a preloadManger val preloadManager = preloadBuilder.build() val player = prelaodBuilder.buildExoPlayer() // Customize duration to preload, by default as per ranking data class TargetPreloadControl : TargetPreloadStatusControl<Int> { override fun getTargetPreloadStatus(rankingData: Int): DefaultPreloadManager.Status { // Preload first 3 seconds of the video return DefaultPreloadManager.Status(STAGE_LOADED_FOR_DURATION_MS, 3000L) } } Preload Manager
val summarizer = Summarization.getClient(summarizerOptions) // Handle feature downloads .. val article = "Today we are announcing a new set of GenAI APIs..." val summarizationRequest = SummarizationRequest.builder(article).build() val summarizationResult = summarizer.runInference(summarizationRequest) val summary = summarizationResult.get().summary Gemini Nano
instance val model = Firebase.vertexAI.liveModel( modelName = "gemini-2.0-flash-live-preview-04-09", generationConfig = liveGenerationConfig { responseModality = ResponseModality.AUDIO } ) val session = model.connect() // You can also create your own recorder and handle the stream session.startAudioCnversation() Gemini Live