Android 17 출시
전문 길이: 13분
오늘 Android 17이 출시되며 지원되는 대부분의 Pixel 기기에서 사용할 수 있습니다. 향후 몇 개월 내에 Android 17을 실행하는 새 기기를 만나보세요.
Android 17은 앱을 중심으로 하는 인텔리전스 시스템으로의 전환을 시작합니다. Android는 대형 화면 크기 조절 필수 도입을 통해 적응형 우선 개발 표준으로 전환하는 동시에 차세대 개인 정보 보호, 보안, 미디어, 카메라, 성능을 제공합니다. 이 게시물에서는 이러한 모든 내용을 다루고, 앱이 이 기회를 활용할 수 있도록 차세대 도구, 라이브러리, 에이전트 기술을 결합하는 방법도 설명합니다.
지난 한 해 동안 Google은 개발자 커뮤니티의 많은 분들과 협력하여 카나리아 채널부터 베타 버전에 이르기까지 개발자와 사용자가 신뢰할 수 있는 플랫폼을 구축했습니다. 이를 위해 이번에 Android 오픈소스 프로젝트 (AOSP)에서 소스 코드를 제공합니다. 이를 통해 소스 코드를 검토하여 Android 작동 방식을 더 깊이 이해할 수 있습니다.
Android 17에 대해 자세히 알아보겠습니다.
인텔리전스 시스템
하드웨어, 소프트웨어, AI를 긴밀하게 통합하여 Android를 운영체제에서 인텔리전스 시스템으로 전환하고 있습니다. 사용자 요구를 예측하는 유용한 새로운 환경을 제공하고 앱과의 참여 기회를 늘리는 데 중점을 둡니다. 이를 위해 Android 17에서는 상응하는 Jetpack 라이브러리가 있는 플랫폼 API인 AppFunctions의 기능을 확장합니다. 이를 통해 앱의 고유한 기능을 Android MCP(온디바이스 모델 컨텍스트 프로토콜과 동일)를 위한 오케스트레이션 가능한 '도구'로 제공할 수 있습니다. AI 에이전트와 어시스턴트 (예: Google Gemini)는 AppFunction을 검색하고 실행하여 앱의 로컬 상태에 직접 액세스하여 사용자를 대신해 워크플로를 실행할 수 있습니다.
현재 알파 버전인 Jetpack 라이브러리를 사용하면 클래스에 주석을 달고 KDoc 주석을 추가하는 것만큼 쉽게 AppFunctions를 추가할 수 있습니다.
/** * A note app's [AppFunction]s. */ class NoteFunctions( private val noteRepository: NoteRepository ) { /** * Adds a new note to the app. * * @param appFunctionContext The execution context. * @param title The title of the note. * @param content The note's content. */ @AppFunction(isDescribedByKDoc = true) suspend fun createNote( appFunctionContext: AppFunctionContext, title: String, content: String ): Note { return noteRepository.createNote(title, content) } }
또한 앱의 주요 워크플로를 분석하고, 필요한 Kotlin 코드를 자동으로 생성하고, LLM 도구 호출을 위해 KDocs를 최적화하고, 테스트 및 디버깅을 위한 ADB 명령어를 제공하는 AppFunctions 에이전트 기술도 출시했습니다.
Gemini 통합은 현재 신뢰할 수 있는 테스터를 대상으로 비공개 프리뷰로 제공되지만 지금 앱을 준비할 수 있습니다. AppFunctions를 실행하는 ADB 명령 외에도 AppFunctions를 검색하고 실행하며 AI 에이전트 통합을 시뮬레이션하는 인터페이스가 포함된 테스트 에이전트 앱이 제공됩니다. goo.gle/eap-af에서 통합 사전 체험판 프로그램에 참여하여 AppFunctions를 프로덕션에 배포하는 최초의 앱이 될 기회를 잡으세요.
적응형 우선
사용자는 더 이상 단일 폼 팩터에 의존하지 않고 휴대전화, 폴더블, 태블릿, 노트북, 자동차 디스플레이, 몰입형 XR 환경 간에 전환합니다. 이제 사용자가 보유한 대형 화면 기기가 5억 8천만 대를 넘어섰고 Google 도서 출시가 임박한 상황에서 Android 스택을 기반으로 구축된 차세대 ChromeOS에서 적응형은 더 이상 기술적 목표에 그치지 않습니다. 참여도가 높은 사용자에게 도달할 수 있는 엄청난 기회이므로 적응형 우선 개발 표준으로 전환하고 있습니다.
대형 화면에서는 크기 조절/방향 제한이 없음
앱이 연결된 디스플레이에서 데스크톱 모드로 실행되는 모바일 기기를 비롯한 모든 폼 팩터에서 프리미엄 환경을 제공하도록 Android 17 (API 수준 37)에서는 API 수준 37을 타겟팅하는 앱의 대형 화면 기기 (sw > 600dp)의 방향 및 크기 조절 제한에 대한 개발자 선택 해제를 삭제합니다. 시스템은 screenOrientation, setRequestedOrientation(), resizeableActivity=false, 화면 비율 제약 조건 (minAspectRatio/maxAspectRatio)을 비롯한 기존 매니페스트 속성과 런타임 API를 무시합니다. 게임 (Google Play의 앱 카테고리 기준)은 계속 면제됩니다. 앱은 모든 창 크기에 적응하고, 사용자가 선호하는 기기 자세를 존중하며, 자유 형식 창을 기본적으로 지원해야 합니다.
차세대 멀티태스킹: 앱 버블, 버블 바, 데스크톱 양방향 PIP
Android 17에서는 사용자의 멀티태스킹 방식을 재정의하는 강력한 새로운 창 기능이 도입되어 앱의 레이아웃 유연성이 더욱 요구됩니다.
- 앱 대화창: 이제 사용자는 메시지 대화창 API를 넘어 런처에서 아이콘을 길게 눌러 모든 앱을 플로팅 대화창으로 변환할 수 있습니다. 이 기능은 휴대전화, 폴더블, 태블릿에서 사용할 수 있어 모든 워크플로에서 가벼운 멀티태스킹이 가능합니다.
- 버블 바: 대형 화면 (태블릿 및 폴더블)에서 시스템 작업 표시줄에는 이제 이러한 플로팅 앱 버블을 정리하고, 전환하고, 도킹할 수 있는 전용 버블 바가 포함됩니다.
- 데스크톱 대화형 PIP: Android 17에서는 데스크톱 환경에서 대화형 PIP 모드를 도입합니다. 읽기 전용인 기존 PIP 창과 달리 이러한 고정 창은 다른 애플리케이션 창 위에 항상 표시되는 동안 완전히 대화형으로 유지됩니다.
활동 재생성 업데이트
방해되는 상태 손실과 끊김 현상을 방지하기 위해 Android 17에서는 활동 재생성의 기본 동작을 업데이트합니다. 시스템은 전체 UI 다시 그리기가 필요하지 않은 일반적인 구성 변경 (CONFIG_KEYBOARD, CONFIG_KEYBOARD_HIDDEN, CONFIG_NAVIGATION, CONFIG_TOUCHSCREEN, CONFIG_COLOR_MODE 등)에 대해 더 이상 기본적으로 활동을 다시 시작하지 않습니다.
대신 실행 중인 활동은 onConfigurationChanged()를 통해 이러한 업데이트를 수신하여 원활한 전환을 지원합니다. 애플리케이션이 이러한 변경사항의 리소스를 다시 로드하기 위해 전체 다시 시작에 명시적으로 의존하는 경우 이제 새로운 android:recreateOnConfigChanges 매니페스트 속성을 사용하여 명시적으로 선택해야 합니다.
계속할 위치
Android 17에서는 사용자가 Android 기기 간에 작업을 원활하게 전환할 수 있도록 계속하기가 추가되었습니다. 사용자는 태블릿 작업 표시줄에 모바일 기기에서 가장 최근에 연 앱에 대한 추천을 볼 수 있으므로 탭 한 번으로 앱을 실행하고 중단한 위치로 딥 링크할 수 있습니다. 계속하기는 앱이 설치되지 않은 경우 웹 사용으로 대체하는 등 앱-웹 전환을 지원할 수 있습니다.
class MyHandoffActivity : Activity() {
...
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Do stuff
...
// Enable handoff
setHandoffEnabled(true, null)
}
// Override and implement onHandoffActivityDataRequested
override fun onHandoffActivityDataRequested(handoffRequestInfo: HandoffActivityDataRequestInfo) : HandoffActivityData {
// Create and return handoff data
}
}Jetpack Compose로 적응형 우선 접근 방식 사용
새로운 Android 17 요구사항에 맞게 앱을 조정할 수 있도록 Jetpack Compose 적응형 기술을 출시했습니다. 이 AI 기반 개발자 워크플로를 사용하면 다음과 같은 최적의 적응형 관행을 구현할 수 있습니다.
- 적응형 탐색: Material 3 적응형 라이브러리의
NavigationSuiteScaffold를 사용하여 모바일의 하단 탐색 메뉴와 대형 화면의 가장자리 고정 탐색 레일 간에 자동으로 전환합니다. - 다중 창 레이아웃: 불안정한 프래그먼트 트랜잭션 대신 Navigation 3 장면 (
ListDetailSceneStrategy및SupportingPaneSceneStrategy)을 사용하여 목록-세부정보 및 지원 창 레이아웃을 네이티브로 구현합니다. - FlexBox 및 그리드 API: Compose 1.11의 동적 레이아웃 구성요소를 활용하여 즉석에서 행과 열 범위를 쉽게 조정하여 콘텐츠가 항상 공간을 아름답게 채우도록 합니다.
- 고급 비터치 입력: Compose 1.11의 향상된 트랙패드 및 마우스 지원 (네이티브 포커스 링,
TrackpadInjectionScope,performTrackpadInput과 같은 새로운 API 포함)을 활용하여 Googlebooks 및 데스크톱 모드에서 진정한 '노트북급' 환경을 쉽게 테스트하고 제공할 수 있습니다. - 동적 창 상태: Compose의 반응형 상태 모델을 활용하여 앱이 전체 화면에서 플로팅 앱 풍선이나 대화형 데스크톱 PIP 창으로 전환될 때 UI를 원활하게 조정하여 최소 크기에서도 프리미엄 환경을 보장합니다.
Android는 Compose 우선입니다.
Compose는 적응형 앱을 빌드하는 가장 쉬운 방법을 제공하며, 이는 모든 Android UI를 Compose로 빌드해야 한다고 생각하는 여러 이유 중 하나일 뿐입니다. 이를 위해 Android 개발은 이제 Compose 우선입니다. 모든 새로운 Android API, 라이브러리, 도구, 개발자 가이드는 Jetpack Compose 전용으로 빌드됩니다. 기존 뷰 구성요소 (android.widget 패키지)와 뷰 기반 Jetpack 라이브러리 (예: Fragments, RecyclerView, ViewPager)가 이제 유지관리 모드에 있습니다. 중요한 버그 수정만 제공되며 새로운 기능은 제공되지 않습니다.
도움말 이전할 준비가 되었나요? Google의 AI 기반 XML to Compose 마이그레이션 스킬을 사용하여 기존 View 레이아웃을 자동으로 분석하고 적응성이 뛰어난 Compose 코드로 변환하세요.
성능 및 효율성
앱 성능은 원활한 사용자 인터페이스, 빠른 앱 시작 시간, 효율적인 멀티태스킹을 의미합니다. Android 17에서는 이러한 모든 영역에서 큰 개선이 이루어졌습니다.
앱 메모리 제한
메모리 사용량은 전반적인 성능의 조용한 기반 중 하나입니다. 포그라운드 앱이나 서비스가 제어되지 않고 증가하면 메모리 관리로 인해 CPU 및 배터리 사용량이 급증하고 결국 캐시된 다른 정상적인 앱과 백그라운드 작업이 종료되어 콜드 스타트가 느려지고 멀티태스킹이 저하됩니다.
Android 17부터 시스템은 기기의 총 RAM을 기반으로 엄격한 앱 메모리 제한을 적용하여 위반 프로세스를 갑자기 종료합니다. 더 엄격해진 요구사항을 준수하는 데 도움이 되는 새로운 기능:
- R8 최적화 도구: R8 최적화 도구는 클래스, 메서드, 필드를 더 짧은 이름으로 축소하고 사용하지 않는 코드와 리소스를 삭제하여 앱의 바이트 코드 메모리 사용 공간을 크게 줄입니다. 새로운 R8 구성 분석기와 함께 전체 모드로 R8을 사용하여 앱이 R8을 최대한 활용하도록 하세요.
- Android 스튜디오 Panda의 LeakCanary: 이제 프로파일러에 IDE 및 소스 코드와 완전히 통합된 전용 작업으로 네이티브 LeakCanary 통합이 제공됩니다.
- ApplicationExitInfo: 이러한 제한으로 인해 앱이 종료되면 ApplicationExitInfo의 getDescription()이 'MemoryLimiter:AnonSwap'을 반환합니다.
- 온디바이스 이상 감지: ProfilingManager의 일부로
TRIGGER_TYPE_ANOMALY를 사용하여 트리거 기반 프로파일링을 활용하여 메모리 한도에 도달하면 힙 덤프를 자동으로 캡처할 수 있습니다.
val profilingManager = applicationContext .getSystemService(ProfilingManager::class.java) val triggers = ArrayList<ProfilingTrigger>().apply { add(ProfilingTrigger.Builder( ProfilingTrigger.TRIGGER_TYPE_ANOMALY).build()) } profilingManager.addProfilingTriggers(triggers)
또한 Google Play Console에 더 많은 실제 메모리 측정항목을 표시하기 위해 노력하고 있습니다.
세대별 가비지 컬렉션
Android 17에서는 ART의 동시 표시 및 압축 가비지 컬렉터 (GC)에 더 자주 실행되고 리소스 집약도가 낮은 young-generation 컬렉션을 도입합니다. 수명이 짧은 객체를 안정적이고 수명이 긴 객체와 분리함으로써 시스템은 비용이 많이 드는 전체 힙 스캔 대신 자주 가벼운 '젊은 세대' 스윕을 실행하여 CPU 사용량과 전력 소모, UI 끊김 현상을 크게 줄입니다. 테스트 결과 애플리케이션 스레드에 대한 GC 간섭이 크게 개선되었으며 최대 메모리 상주 세트 크기 (RSS)가 감소한 것으로 나타났습니다. Google Play 시스템 업데이트를 통해 Android 12 (API 수준 31) 이상을 실행하는 10억 대가 넘는 기기에서도 ART 개선사항을 사용할 수 있습니다.
잠금 없는 MessageQueue
SDK 37 이상을 타겟팅하는 앱의 경우 이제 핵심 android.os.MessageQueue가 잠금 없는 아키텍처를 구현하여 누락된 프레임을 크게 줄이고 앱 시작 시간을 개선하며 멀티 스레드 시나리오에서 사용 중인 대기열의 성능을 크게 개선합니다. 참고: 비공개 MessageQueue 필드 및 메서드에서 리플렉션을 사용하는 앱이 중단될 수 있습니다. MessageQueue 내부를 사용하지 않고 계측 테스트를 위해 TestLooperManager에 peekWhen 및 poll API가 추가되었습니다.
이제 정적 최종 필드가 진정으로 최종임
Android 17부터 SDK 37 이상을 타겟팅하는 앱은 'static final' 필드를 수정할 수 없으므로 런타임에서 성능 최적화를 더 적극적으로 적용할 수 있습니다. 리플렉션 (또는 심층 리플렉션)을 통해 이를 시도하면 IllegalAccessException이 발생합니다.
JNI의 SetStatic<Type>Field 메서드 패밀리를 통해 수정하면 애플리케이션이 즉시 비정상 종료됩니다.
맞춤 알림 보기 제한
메모리 사용량을 줄이기 위해 맞춤 알림 뷰의 크기를 추가로 제한합니다. 이번 업데이트를 통해 앱이 URI를 사용하여 기존 제한을 우회할 수 있는 허점이 해결됩니다. 이 동작은 타겟 SDK 버전으로 관리되며 API 37 이상을 타겟팅하는 앱에 적용됩니다.
개인 정보 보호 및 보안
사용자 신뢰 유지는 Android 생태계의 핵심입니다. Android 17에서는 사용자 환경을 간소화하면서 민감한 정보를 보호하는 강력한 기능이 도입되었습니다.
개인 정보를 보호하는 선택사항
이전에는 앱이 연락처, 정확한 위치, 미디어 파일과 같은 정보에 액세스하려면 광범위하고 영구적인 권한이 필요했습니다. Android 17에서는 사용자가 명시적으로 선택한 데이터에만 임시 세션 기반 액세스 권한을 부여하는 개인 정보 보호 선택사항으로의 전환이 계속됩니다.
- 시스템 수준 연락처 선택 도구:
ACTION_PICK_CONTACTS를 활용하면 앱이 사용자가 선택한 특정 필드 (예: 이메일 또는 전화번호)에 대한 임시 액세스 권한만 요청할 수 있으므로 광범위한READ_CONTACTS권한이 필요하지 않습니다. 또한 직장/개인 프로필 분리를 완전히 지원합니다. - 맞춤설정 가능한 사진 선택 도구 가로세로 비율: PhotoPickerUiCustomizationParams를 사용하여 시스템 사진 선택 도구를 맞춤설정하여 세로 모드로 썸네일을 표시할 수 있습니다. 동영상 기반 소셜 미디어 앱과 같이 항상 세로 모드로 사진과 동영상을 표시하는 앱에 적합합니다.
- 시스템 렌더링 위치 버튼: 앱에 삽입할 수 있는 새로운 시스템 렌더링 위치 버튼은 현재 세션에만 정확한 위치 액세스 권한을 부여합니다.
- EyeDropper API: 새로운 시스템 수준 API인
ACTION_OPEN_EYE_DROPPER를 사용하면 앱에서 시스템 지원 스포이드를 만들어 사용자가 디스플레이의 모든 픽셀에서 색상을 선택할 수 있습니다. 이를 통해 광범위하고 민감한 화면 캡처 또는 미디어 프로젝션 권한이 필요 없는 안전하고 개인 정보 보호를 준수하는 색상 선택 환경을 제공할 수 있습니다.
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) }
로컬 네트워크 액세스
이제 Android 17을 타겟팅하는 앱은 ACCESS_LOCAL_NETWORK 런타임 권한이 필요하거나 스마트 홈 기기와 통신하거나 수신기를 전송하는 등 로컬 네트워크 통신을 위해 시스템에서 중재하고 개인 정보 보호를 유지하는 기기 선택 도구를 사용해야 합니다. ACCESS_LOCAL_NETWORK는 기존 NEARBY_DEVICES 권한 그룹에 속하므로 이미 다른 NEARBY_DEVICES 권한을 부여한 사용자에게는 다시 메시지가 표시되지 않습니다.
SMS OTP 보호
Android 17에서는 SMS 메시지에 대한 액세스를 3시간 지연하여 SMS 일회용 비밀번호 (OTP) 보호를 확장합니다.
- WebOTP 형식: 의도한 수신자가 아닌 모든 앱 (도메인 불일치)에 대해 지연됨
- 표준 SMS OTP: SDK 37 이상을 타겟팅하는 모든 앱에서 지연됩니다.
예외: 기본 SMS, 어시스턴트, 연결된 호환 앱은 예외입니다. 앱은 SMS Retriever 또는 SMS User Consent API로 이전하는 것이 좋습니다.
양자 내성 암호화 (PQC)
Android 17은 차세대 암호화 보안을 지원합니다.
- 키 저장소 통합: 지원되는 기기는 보안 하드웨어에서 ML-DSA (모듈 격자 기반 디지털 서명 알고리즘) 키를 생성하여 표준 JCA API를 통해 노출되는 양자 내성 서명을 생성할 수 있습니다.
- 하이브리드 APK 서명: 클래식 서명과 ML-DSA 서명을 결합하여 앱 전송을 보호하는 v3.2 APK 서명 체계가 도입되었습니다.
더 안전한 네이티브 동적 코드 로드
앱이 SDK 37 이상을 타겟팅하는 경우 DEX 및 JAR 파일에 Android 14에서 도입된 더 안전한 동적 코드 로드 (DCL) 보호가 이제 네이티브 라이브러리로 확장됩니다. System.load를 사용하여 로드된 모든 네이티브 파일은 읽기 전용으로 표시해야 합니다. 그렇지 않으면 시스템에서 UnsatisfiedLinkError가 발생합니다.
물리적 입력에 대한 스마트한 비밀번호 보호
Android 17에서는 실제 키보드를 사용할 때 비밀번호, PIN, 기타 보안 비밀을 입력하는 것이 더 안전해집니다. 기본적으로 마지막으로 입력한 문자가 더 이상 표시되지 않기 때문입니다.
사용자는 이러한 디스플레이 설정을 환경설정에 맞게 쉽게 맞춤설정할 수 있습니다 (기기 제조업체에 따라 제공 여부가 다를 수 있음).
이러한 향상된 개인 정보 보호 기능은 Android의 내장 SDK 구성요소에서 자동으로 지원되며 SecureTextFields의 Compose 1.12에서 지원됩니다.
크리에이터에게 힘을 주고 사용자에게 즐거움을 주는 미디어 및 카메라 기능
Android 17에서는 전문가 수준의 카메라와 미디어에 액세스할 수 있는 새로운 크리에이터 기능을 도입하여 소비자 환경을 개선합니다.
- Eclipsa Video: 기기가 디스플레이 헤드룸과 주변 조명 조건에 맞게 콘텐츠를 조정하고 표준 콘텐츠와 HDR 콘텐츠의 동시 표시를 개선할 수 있도록 새로운 메타데이터를 도입하는 SMPTE ST 2094-50 사양을 기반으로 구축된 HDR 동영상 표준입니다.
- RAW14 이미지 형식: RAW14 이미지 형식에 대한 새로운 지원을 통해 전문 카메라 앱이 호환되는 카메라 센서에서 최고 수준의 세부사항과 색심도를 캡처할 수 있습니다.
- 공급업체 정의 카메라 확장 프로그램: 공급업체 정의 확장 프로그램을 사용하면 하드웨어 파트너가 맞춤 카메라 확장 프로그램 모드를 정의하고 구현하여 최신 최고의 카메라 기능에 액세스할 수 있습니다.
- 확장 HE-AAC 소프트웨어 인코더: 새로운 시스템 제공 확장 HE-AAC 소프트웨어 인코더는 통합 음성 및 오디오 코딩을 사용하여 낮은 비트 전송률과 높은 비트 전송률을 모두 지원하며, 음량 메타데이터 지원을 비롯하여 낮은 대역폭 조건에서 음성 메시지의 오디오 품질을 크게 개선합니다.
- 다용도 동영상 코딩 (H.266): OEM이 MediaFormat에서 video/vvc MIME 유형을 정의하고, MediaCodecInfo에 새 VVC 프로필을 추가하고, MediaExtractor에 지원을 통합하여 코덱 지원을 추가할 수 있습니다.
- 카메라 기기 유형: 카메라가 내장 하드웨어인지, 외장 USB 웹캠인지, 가상 카메라인지 식별하기 위해 기본 기기 유형을 쿼리하는 새로운 API입니다.
- 동영상 녹화의 일정한 품질: MediaRecorder의 setVideoEncodingQuality는 동영상 인코더의 일정한 품질 (CQ) 모드를 구성하여 전체 동영상에서 시각적 충실도를 일정하게 유지합니다.
보청기 지원 개선
- 블루투스 LE 오디오 보청기 지원: 이제 Android에는 새로운 AudioDeviceInfo.TYPE_BLE_HEARING_AID 상수가 포함된 저전력 블루투스 (BLE) 오디오 보청기를 위한 특정 기기 카테고리가 포함되어 있으므로 앱에서 보청기를 일반 헤드셋과 구분하여 청각 보조 기기를 사용하는 사용자에게 맞춤 환경을 제공할 수 있습니다.
- 보청기의 세부적인 오디오 라우팅: Android 17을 사용하면 사용자가 특정 시스템 소리가 재생되는 위치를 독립적으로 관리할 수 있습니다. 알림, 벨소리, 알람을 연결된 보청기 또는 기기의 내장 스피커로 라우팅하여 보청기 관리 앱의 블루투스 연결을 유지하면서 원치 않는 인이어 중단을 방지할 수 있습니다.
CameraX 및 Media3
CameraX와 Media3이 Android 17용으로 업데이트되었습니다. 이러한 API는 미디어 개발의 거친 부분을 다듬고 안정적인 카메라 캡처, 원활한 미디어 재생, 창의적이고 복잡한 편집 환경을 간단하게 빌드할 수 있도록 지원합니다.
기존 Android 카메라 구현 (Camera1 또는 원시 Camera2 API)을 CameraX로 이전할 수 있는 에이전트 스킬이 출시되었습니다.
참고: Android 17 기기에 추가된 동적 범위 모드와 관련된 비정상 종료를 방지하려면 CameraX 버전을 1.5.2 또는 1.6.0 이상으로 업데이트해야 합니다.
앱, 라이브러리, 도구, 게임 엔진을 준비하세요.
Android SDK, 라이브러리, 도구 또는 게임 엔진을 개발하는 경우 호환성 문제로 인해 다운스트림 앱 및 게임 개발자가 차단되지 않고 최신 SDK 기능을 타겟팅할 수 있도록 지금 필요한 업데이트를 준비하는 것이 중요합니다. Android 17을 완전히 지원하려면 업데이트가 필요한지 다운스트림 개발자에게 알려주세요.
테스트에는 Android 17 베타 4를 실행하는 기기나 에뮬레이터에 Google Play 또는 다른 수단을 사용하여 라이브러리나 엔진을 사용하는 프로덕션 앱 또는 테스트 앱을 설치하는 작업이 포함됩니다. 앱의 모든 흐름을 살펴보고 기능 또는 UI 문제를 찾습니다. Android의 각 출시에는 개인 정보 보호, 보안, 전반적인 사용자 환경을 개선하는 플랫폼 변경사항이 포함됩니다. 앱에 영향을 미치는 동작 변경사항을 검토하여 실행되는 앱과 타겟팅하는 앱의 테스트에 집중하세요. 다음이 포함됩니다.
- 대형 화면의 크기 조절: Android 17 (SDK 37)을 타겟팅하면 더 이상 대형 화면에서 방향, 크기 조절, 가로세로 비율 제약 조건을 유지하지 않도록 선택할 수 없습니다.
- 동적 코드 로드: 앱이 SDK 37 이상을 타겟팅하는 경우 DEX 및 JAR 파일에 Android 14에서 도입된 더 안전한 동적 코드 로드 (DCL) 보호가 네이티브 라이브러리로 확장됩니다. System.load()를 사용하여 로드된 모든 네이티브 파일은 읽기 전용으로 표시해야 합니다. 그렇지 않으면 시스템에서 UnsatisfiedLinkError가 발생합니다.
- 기본적으로 CT 사용 설정: 인증서 투명성 (CT)이 기본적으로 사용 설정됩니다. (Android 16에서는 CT를 사용할 수 있지만 앱이 선택해야 했습니다.)
- 로컬 네트워크 보호: SDK 37 이상을 타겟팅하는 앱은 기본적으로 로컬 네트워크 액세스가 차단됩니다. 가능한 경우 개인 정보 보호 선택기로 전환하고 광범위하고 지속적인 액세스를 위해 새로운
ACCESS_LOCAL_NETWORK권한을 사용하세요. - 백그라운드 오디오 강화: Android 17부터 오디오 프레임워크는 오디오 재생, 오디오 포커스 요청, 볼륨 변경 API를 비롯한 백그라운드 오디오 상호작용에 관한 제한사항을 적용합니다. 베타 2 이후 사용자의 의견을 반영하여 사용 중 FGS 시행 시 targetSDK 제한 및 알람 오디오 면제 등 일부 변경사항이 적용되었습니다. 자세한 내용은 업데이트된 가이드를 참고하세요.
- NPU 액세스 선언: NPU에 직접 액세스해야 하는 Android 17 타겟팅 앱은 매니페스트에서
FEATURE_NEURAL_PROCESSING_UNIT를 선언하여 NPU 액세스가 차단되지 않도록 해야 합니다. 여기에는 LiteRT NPU 위임자, 공급업체별 SDK, 지원 중단된 NNAPI를 사용하는 앱이 포함됩니다.
Android 17 시작하기
Android 베타를 사용하고 있지 않다면 Pixel 기기에 곧 Android 17이 제공됩니다. Pixel 기기가 없다면 Android 스튜디오에서 Android Emulator와 함께 64비트 시스템 이미지를 사용하면 됩니다. 현재 Android 17 베타 4.1을 사용 중이며 아직 Android 17 QPR1 베타를 사용하지 않은 경우 프로그램을 선택 해제하면 Android 17 출시 버전이 무선으로 제공됩니다.
파트너 기기에 Android 17 베타 설치
Android 17은 Honor, iQOO, Lenovo, OnePlus, OPPO, Realme, Sharp, vivo, Xiaomi를 비롯한 파트너의 휴대전화, 태블릿, 폴더블 폼 팩터에서 베타로 제공됩니다.
Android 17로 최적의 환경에서 개발하려면 Android 스튜디오 Quail의 최신 Canary 빌드를 사용하는 것이 좋습니다. 설정을 완료한 후에는 다음 작업을 수행해야 합니다.
- 현재 앱의 호환성을 테스트하고, 앱이 Android 17의 변경사항에 영향을 받는지 알아보고, Android 17을 실행하는 기기나 Android Emulator에 앱을 설치하여 광범위하게 테스트합니다.
Android 개발자 프리뷰 및 베타 프로그램에 참여해 주신 모든 분들께 다시 한번 감사드립니다. 앱에서 Android 17의 업데이트를 어떻게 활용할지 기대되며, 앞으로 빠른 출시 주기로 업데이트를 제공할 계획입니다.
Android 17에 관한 전체 정보는 Android 17 개발자 사이트를 참고하세요.
계속 읽기
-
제품 소식
오늘 베타 3를 통해 Android 17이 공식적으로 플랫폼 안정성에 도달했습니다. 즉, API 노출 영역이 잠겼으며 최종 호환성 테스트를 실행하고 Android 17을 타겟팅하는 앱을 Play 스토어로 푸시할 수 있습니다.
Matthew McCullough • 읽는 데 5분 소요
-
제품 소식
Google I/O '26에서는 Android 개발자를 위한 17가지 주요 발표가 진행됩니다. 여기에는 에이전트 기반 생산성, UI 표준으로서의 Compose 우선, 확장되는 생태계를 위한 고성능 미디어 및 적응형 개발이 포함됩니다.
Matthew McCullough • 8분 읽기
-
제품 소식
오늘 The Android Show에서 발표된 바와 같이 Android가 운영체제에서 인텔리전스 시스템으로 전환되어 앱과의 상호작용 기회가 늘어납니다.
Matthew McCullough • 읽는 데 4분 소요
소식 받아보기
Android 개발 관련 최신 정보를 이메일로 받아 보세요.