오늘은 개인 정보 보호, 보안, 세련된 성능을 우선시하는 플랫폼을 구축하기 위한 작업을 계속하면서 Android 17의 두 번째 베타를 출시합니다. 이 업데이트는 EyeDropper API 및 개인 정보 보호 연락처 선택 도구를 비롯한 다양한 새로운 기능을 제공합니다. 또한 고급 범위 지정, 교차 기기 핸드오프 API 등을 추가하고 있습니다.
이 버전은 2분기에 연간 주요 SDK 출시를 진행한 후 소규모 SDK 업데이트를 진행하는 출시 주기의 변화를 계속합니다.
사용자 환경 및 시스템 UI
대화창
대화창은 메시지 대화창 API와 별도로 새로운 부동 UI 환경을 제공하는 창 모드 기능입니다. 사용자는 런처에서 앱 아이콘을 길게 눌러 휴대전화, 폴더블 또는 태블릿에서 앱 대화창을 만들 수 있습니다. 대형 화면에는 작업 표시줄의 일부로 대화창 표시줄이 있으며, 사용자는 화면의 고정된 지점 간에 대화창을 정리하고 이동하고 이동할 수 있습니다.
앱이 대화창으로 올바르게 작동하도록 멀티 윈도우 모드 지원 가이드라인을 따라야 합니다.
대화창은 아직 베타 2에서 완전히 사용 설정되지 않았습니다. 향후 Android 17 빌드에서 대화창을 확인하세요.
EyeDropper API
새로운 시스템 수준 EyeDropper API를 사용하면 민감한 화면 캡처 권한이 없어도 앱에서 디스플레이의 모든 픽셀에서 색상을 요청할 수 있습니다.
val eyeDropperLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
result -> if (result.resultCode == Activity.RESULT_OK) {
val color = result.data?.getIntExtra(Intent.EXTRA_COLOR, Color.BLACK)
// Use the picked color in your app
}
}
fun launchColorPicker() {
val intent = Intent(Intent.ACTION_OPEN_EYE_DROPPER)
eyeDropperLauncher.launch(intent)
}
연락처 선택 도구
ACTION_PICK_CONTACTS를 통한 새로운 시스템 수준 연락처 선택 도구는 사용자 요청에 따라 특정 데이터 필드에만 임시 세션 기반 읽기 액세스 권한을 부여하여 광범위한 READ_CONTACTS 권한의 필요성을 줄입니다. 또한 기기의 개인 또는 직장 프로필에서 선택할 수 있습니다.
val contactPicker = rememberLauncherForActivityResult(StartActivityForResult()) {
if (it.resultCode == RESULT_OK) {
val uri = it.data?.data ?: return@rememberLauncherForActivityResult
// Handle result logic
processContactPickerResults(uri)
}
}
val dataFields = arrayListOf(Email.CONTENT_ITEM_TYPE, Phone.CONTENT_ITEM_TYPE)
val intent = Intent(ACTION_PICK_CONTACTS).apply {
putStringArrayListExtra(EXTRA_PICK_CONTACTS_REQUESTED_DATA_FIELDS, dataFields)
putExtra(EXTRA_ALLOW_MULTIPLE, true)
putExtra(EXTRA_PICK_CONTACTS_SELECTION_LIMIT, 5)
}
contactPicker.launch(intent)
터치패드와의 포인터 캡처 호환성 개선
이전에는 앱이 포인터를 캡처했을 때 터치패드가 마우스와 매우 다른 방식으로 이벤트를 보고했습니다. 마우스에서 보고하는 상대적 움직임이 아니라 패드의 손가락 위치를 보고했습니다. 이로 인해 1인칭 게임에서 터치패드를 제대로 지원하기가 매우 어려웠습니다. 이제 기본적으로 시스템은 터치패드가 캡처될 때 포인터 이동 및 스크롤 동작을 인식하고 마우스 이벤트와 마찬가지로 보고합니다. 새로운 '절대' 모드에서 캡처를 명시적으로 요청하여 이전의 상세한 손가락 위치 데이터를 계속 요청할 수 있습니다.
// To request the new default relative mode (mouse-like events) // This is the same as requesting with View.POINTER_CAPTURE_MODE_RELATIVE view.requestPointerCapture() // To request the legacy absolute mode (raw touch coordinates) view.requestPointerCapture(View.POINTER_CAPTURE_MODE_ABSOLUTE)
대화형 선택 도구 휴식 경계
Android의 ChooserSession에서 getInitialRestingBounds를 호출하면 앱에서 애니메이션 및 데이터 로드가 완료된 후 선택 도구가 차지하는 타겟 위치를 식별하여 UI를 더 효과적으로 조정할 수 있습니다.
연결 및 교차 기기
교차 기기 앱 핸드오프
새로운 Handoff API를 사용하면 Android 태블릿과 같은 다른 기기에서 재개할 애플리케이션 상태를 지정할 수 있습니다. 선택하면 시스템이 CompanionDeviceManager를 통해 상태를 동기화하고 사용자의 근처 기기 런처에 핸드오프 추천을 표시합니다. 이 기능은 원활한 작업 연속성을 제공하도록 설계되어 사용자가 Android 생태계 전반에서 워크플로를 중단한 지점을 정확히 선택할 수 있습니다. 특히 핸드오프는 네이티브 앱 간 전환과 앱-웹 폴백을 모두 지원하여 최대한의 유연성을 제공하고 수신 기기에 네이티브 앱이 설치되어 있지 않은 경우에도 완전한 환경을 보장합니다.
고급 범위 지정 API
두 가지 새로운 범위 지정 기술을 지원합니다.
- UWB DL-TDOA : 앱에서 실내 탐색에 UWB를 사용할 수 있습니다. 이 API 노출 영역은 FIRA (Fine Ranging Consortium) 4.0 DL-TDOA 사양을 준수하며 개인 정보 보호 실내 탐색을 지원합니다 (앵커에 의한 기기 추적 방지).
- 근접 감지 : 앱에서 WFA (WiFi Alliance)에서 채택하는 새로운 범위 지정 사양을 사용할 수 있습니다. 이 기술은 기존 Wi-Fi Aware 기반 범위 지정 사양에 비해 안정성과 정확성이 개선되었습니다.
데이터 요금제 개선사항
미디어 품질을 최적화하기 위해 이제 앱에서 getStreamingAppMaxDownlinkKbps 및 getStreamingAppMaxUplinkKbps를 사용하여 스트리밍 애플리케이션에 이동통신사가 할당한 최대 데이터 전송률을 가져올 수 있습니다.
핵심 기능, 개인 정보 보호, 성능
로컬 네트워크 액세스
Android 17은 무단 로컬 네트워크 액세스로부터 사용자를 보호하기 위해 ACCESS_LOCAL_NETWORK 런타임 권한을 도입합니다. 이 권한은 기존 NEARBY_DEVICES 권한 그룹에 속하므로 이미 다른 NEARBY_DEVICES 권한을 부여한 사용자에게는 다시 메시지가 표시되지 않습니다. 이 권한을 선언하고 요청하면 앱에서 스마트 홈 기기 또는 전송 수신기 등의 근거리 통신망 (LAN)의 기기를 검색하고 연결할 수 있습니다. 이렇게 하면 악성 앱이 무제한 로컬 네트워크 액세스를 악용하여 은밀한 사용자 추적 및 지문 인식에 사용하는 것을 방지할 수 있습니다. Android 17 이상을 타겟팅하는 앱은 이제 시스템 중재 개인 정보 보호 기기 선택 도구를 채택하여 권한 메시지를 건너뛰거나 런타임에 이 새 권한을 명시적으로 요청하여 로컬 네트워크 통신을 유지하는 두 가지 방법으로 LAN 기기와의 통신을 유지할 수 있습니다.
시간대 오프셋 변경 브로드캐스트
이제 Android는 일광 절약 시간 전환과 같이 시스템의 시간대 오프셋이 변경될 때 트리거되는 안정적인 브로드캐스트 인텐트인 ACTION_TIMEZONE_OFFSET_CHANGED를 제공합니다. 이는 Unix 타임스탬프가 변경될 때와 시간대 ID가 변경될 때 각각 트리거되는 기존 브로드캐스트 인텐트 ACTION_TIME_CHANGED 및 ACTION_TIMEZONE_CHANGED를 보완합니다.
NPU 관리 및 우선순위 지정
NPU에 직접 액세스해야 하는 Android 17을 타겟팅하는 앱은 NPU에 액세스하지 못하도록 차단되지 않도록 매니페스트에서 FEATURE_NEURAL_PROCESSING_UNIT을 선언해야 합니다. 여기에는 LiteRT NPU 위임, 공급업체별 SDK, 지원 중단된 NNAPI를 사용하는 앱이 포함됩니다.
ICU 78 및 유니코드 17 지원
핵심 국제화 라이브러리가 ICU 78로 업데이트되어 새로운 스크립트, 문자, 이모티콘 블록 지원이 확대되고 시간 객체를 직접 포맷팅할 수 있게 되었습니다.
SMS OTP 보호
Android는 OTP가 포함된 SMS 메시지에 대한 액세스를 자동으로 지연하여 SMS OTP 보호를 확대하고 있습니다. 이전에는 SMS 검색 도구 해시가 포함된 메시지 전송이 대부분의 앱에서 3시간 동안 지연되는 SMS 검색 도구 형식에 주로 보호가 집중되었습니다. 그러나 기본 SMS 앱 등과 같은 특정 앱과 해시에 해당하는 앱은 이 지연에서 제외됩니다. 이 업데이트는 OTP가 포함된 모든 SMS 메시지로 보호를 확장합니다. 대부분의 앱에서 OTP 하이재킹을 방지하기 위해 OTP가 포함된 SMS 메시지는 3시간 지연 후에만 액세스할 수 있습니다. SMS_RECEIVED_ACTION 브로드캐스트가 보류되고 SMS 제공업체 데이터베이스 쿼리가 필터링됩니다. 지연 후 이러한 앱에서 SMS 메시지를 사용할 수 있습니다.
WebOTP 형식 SMS 메시지에 대한 액세스 지연
앱에 SMS 메시지를 읽을 권한이 있지만 도메인 인증에 따라 OTP의 수신자가 아닌 경우 WebOTP 형식 SMS 메시지는 3시간이 지난 후에만 액세스할 수 있습니다. 이 변경사항은 메시지에 언급된 도메인과 연결된 앱만 프로그래매틱 방식으로 인증 코드를 읽을 수 있도록 하여 사용자 보안을 개선하기 위해 설계되었습니다. 이 변경사항은 대상 API 수준과 관계없이 모든 앱에 적용됩니다.
OTP가 포함된 표준 SMS 메시지에 대한 액세스 지연
WebOTP 또는 SMS 검색 도구 형식을 사용하지 않는 OTP가 포함된 SMS 메시지의 경우 대부분의 앱에서 OTP SMS는 3시간 후에만 액세스할 수 있습니다. 이 변경사항은 Android 17 (API 수준 37) 이상을 타겟팅하는 앱에만 적용됩니다.
기본 SMS, 어시스턴트 앱, 연결된 기기 도우미 앱 등과 같은 특정 앱은 이 지연에서 제외됩니다.
OTP 추출을 위해 SMS 메시지 읽기에 의존하는 모든 앱은 계속 기능을 제공하기 위해 SMS 검색 도구 또는 SMS 사용자 동의 API를 사용하도록 전환해야 합니다.
Android 17 일정
3월을 목표로 이 베타에서 플랫폼 안정성 마일스톤으로 빠르게 이동할 예정입니다. 이 마일스톤에서는 최종 SDK/NDK API를 제공합니다. 그때부터 앱은 SDK 37을 타겟팅하고 Google Play에 게시하여 Android 17의 정식 버전 출시 전 몇 달 동안 테스트를 완료하고 사용자 의견을 수집할 수 있습니다.
출시 연도
Android 17은 분기별 출시를 통해 계속 업데이트될 예정입니다. 2분기에 예정된 출시에서는 계획된 앱 호환성이 손상되는 동작 변경사항만 도입합니다. 4분기에는 추가 API와 기능이 포함된 소규모 SDK 출시가 있을 예정입니다.
Android 17 시작하기
지원되는 Pixel 기기를 등록하면 이 업데이트와 향후 Android 베타 업데이트를 무선으로 받을 수 있습니다. Pixel 기기가 없는 경우 Android 스튜디오에서 Android Emulator와 함께 64비트 시스템 이미지를 사용할 수 있습니다.
현재 Android 베타 프로그램에 참여하고 있다면 베타 2로 무선 업데이트가 제공됩니다.
Android 26Q1 베타를 사용하고 있으며 26Q1의 최종 안정화 버전을 사용하고 베타를 종료하려면 26Q2 베타 2로의 무선 업데이트를 무시하고 26Q1 출시를 기다려야 합니다.
의견을 기다리고 있으니 의견 페이지에서 문제를 신고하고 기능 요청을 제출해 주세요. 의견을 빨리 보낼수록 최종 출시 작업에 더 많이 반영할 수 있습니다.
Android 17을 사용해 최적의 환경에서 개발하려면 Android 스튜디오 (Panda)의 최신 미리보기를 사용하는 것이 좋습니다. 설정이 완료되면 다음 작업을 실행해야 합니다.
- 새 SDK에서 컴파일하고 CI 환경에서 테스트하고 의견 페이지의 트래커에서 문제를 신고합니다.
- 현재 앱의 호환성을 테스트하고 Android 17의 변경사항이 앱에 영향을 미치는지 알아보고 Android 17을 실행하는 기기 또는 에뮬레이터에 앱을 설치하고 광범위하게 테스트합니다.
Android 17 출시 주기 내내 미리보기/베타 시스템 이미지와 SDK를 정기적으로 업데이트할 예정입니다. 베타 빌드를 설치하고 나면 향후 업데이트가 자동으로
모든 최신 프리뷰 및 베타에 무선 업데이트로 제공됩니다.
자세한 내용은 Android 17 개발자 사이트를 참고하세요.
대화 참여하기
올해 말 플랫폼 안정성 및 Android 17의 정식 버전 출시를 향해 나아가는 동안 여러분의 의견은 가장 소중한 자산입니다. 카나리아 채널의 얼리 어답터이든 베타 2에서 테스트하는 앱 개발자이든 커뮤니티에 가입하고 의견을 제출해 보세요. 여러분의 의견을 기다립니다.
계속 읽기
-
제품 소식
오늘은 복잡한 추론 및 자율 도구 호출 기능으로 설계된 최신 최첨단 오픈 모델인 Gemma 4로 Android 개발을 개선합니다.
Matthew McCullough • 2분 읽기
-
제품 소식
Android 17은 오늘 베타 3으로 플랫폼 안정성에 공식적으로 도달했습니다. 즉, API 노출 영역이 잠겨 있습니다. 최종 호환성 테스트를 실행하고 Android 17을 타겟팅하는 앱을 Play 스토어에 푸시할 수 있습니다.
Matthew McCullough • 5분 읽기
-
제품 소식
Google은 양질의 Android 앱을 더 빠르고 쉽게 빌드할 수 있도록 지원하고자 하며, 생산성을 높이는 한 가지 방법은 AI를 손쉽게 사용할 수 있도록 하는 것입니다.
Matthew McCullough • 2분 읽기
소식 받아 보기
Android 개발 관련 최신 정보를 이메일로 받아 보세요. 매주