제품 소식

Android 17의 첫 번째 베타

전문 길이: 7분
Matthew McCullough
Android 개발자 제품 관리 부문 부사장

오늘 Android 17의 첫 번째 베타가 출시됩니다. Google은 개인 정보 보호, 보안, 세련된 성능을 우선시하는 플랫폼을 구축하기 위해 계속 노력하고 있습니다. 이 빌드는 더 적응력이 뛰어난 Android 앱을 만들기 위한 노력을 이어가고, 카메라 및 미디어 기능을 크게 개선하며, 연결을 최적화하는 새로운 도구와 호환 기기용 확장 프로필을 도입합니다. 이번 출시에서는 기존 개발자 프리뷰 모델에서 Android 카나리아 프로그램으로 새로운 버전을 개발자 커뮤니티에 제공하는 방식의 근본적인 변화도 강조합니다.

개발자 프리뷰 이후

Android에서는 기존의 '개발자 프리뷰'를 지속적인 Canary 채널로 대체했습니다. 이 새로운 '상시 사용' 모델은 다음과 같은 세 가지 주요 이점을 제공합니다.

  • 빠른 액세스: 기능과 API는 분기별 출시를 기다리지 않고 내부 테스트를 통과하는 즉시 Canary에 제공됩니다.
  • 안정성 개선: Canary에서 조기에 '실전 테스트'를 진행하면 최종 버전에 더 가까운 새로운 API와 동작 변경사항이 적용된 세련된 베타 환경을 제공할 수 있습니다.
  • 더 쉬운 테스트: 카나리아는 OTA 업데이트를 지원하므로 (더 이상 수동으로 플래시하지 않아도 됨) 별도의 업데이트 채널로 CI 워크플로와 더 쉽게 통합되며, 예정된 잠재적 변경사항에 대한 즉각적인 의견을 제공할 수 있는 가장 빠른 창을 제공합니다.

Android 17 일정

이번 베타에서 3월을 목표로 하는 플랫폼 안정성 마일스톤으로 빠르게 이동할 예정입니다. 이 주요 시점에서 최종 SDK/NDK API와 거의 최종적인 앱 지향 동작이 제공됩니다. 이때부터 최종 출시까지 테스트를 완료하는 데 몇 개월이 걸립니다.

timeline1.png

1년간의 출시

Android 17은 분기별 출시를 통해 계속 업데이트될 예정입니다. 2분기에 출시될 예정인 버전에서만 계획된 앱 주요 변경사항이 도입됩니다. 4분기에 추가 API와 기능이 포함된 소규모 SDK 출시가 예정되어 있습니다.

timeline2.png

방향 및 크기 조절 제한사항

Android 17 베타 출시와 함께 적응형 로드맵의 다음 단계로 이동합니다. Android 17 (API 수준 37)에서는 대형 화면 기기 (sw > 600dp)의 방향 및 크기 조절 제한에 대한 개발자 선택 해제가 삭제됩니다.

앱이 SDK 37을 타겟팅하는 경우 적응할 준비가 되어 있어야 합니다. 사용자는 태블릿에서 멀티태스킹을 하든, 기기를 펼치든, 데스크톱 창 환경을 사용하든 앱이 어디서나 작동하기를 기대하며 UI가 공간을 채우고 기기 자세를 존중하기를 기대합니다.

SDK 37의 주요 변경사항

Android 17을 타겟팅하는 앱은 Android 16에 도입된 매니페스트 속성 및 런타임 API의 단계적 폐지와 호환되어야 합니다. 대형 화면 (작은 치수 ≥ 600dp)에서 실행할 때는 다음 속성과 API가 무시됩니다.

매니페스트 속성/API무시된 값
screenOrientationportrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape
setRequestedOrientation()portrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape
resizeableActivity모두
minAspectRatio모두
maxAspectRatio모두

예외 및 사용자 제어

이러한 변경사항은 대형 화면에만 적용되며 sw600dp 미만의 화면 (일반 슬레이트 폼 팩터 휴대전화 포함)에는 적용되지 않습니다. 또한 android:appCategory 플래그를 기반으로 게임으로 분류된 앱은 이러한 제한에서 제외됩니다.

사용자가 계속 제어할 수 있다는 점도 중요합니다. 시스템의 화면 비율 설정을 통해 앱의 기본 동작을 사용하도록 명시적으로 선택하거나 선택 해제할 수 있습니다.

구성 변경사항 업데이트

앱 호환성을 개선하고 동영상 재생 중단, 입력 누락, 기타 유형의 방해 상태 손실을 최소화하기 위해 활동 재생성의 기본 동작이 업데이트됩니다. Android 17부터는 일반적으로 UI 재생성이 필요하지 않은 특정 구성 변경사항(예: CONFIG_KEYBOARDCONFIG_KEYBOARD_HIDDENCONFIG_NAVIGATIONCONFIG_UI_MODE(UI_MODE_TYPE_DESK만 변경되는 경우), CONFIG_TOUCHSCREENCONFIG_COLOR_MODE)에 대해 기본적으로 활동이 다시 시작되지 않습니다. 대신 실행 중인 활동은 onConfigurationChanged를 통해 이러한 업데이트를 수신합니다. 애플리케이션이 이러한 변경사항의 리소스를 다시 로드하기 위해 전체 다시 시작에 의존하는 경우 이제 새로운 android:recreateOnConfigChanges 매니페스트 속성을 사용하여 명시적으로 선택해야 합니다. 이 속성을 사용하면 관련 상수 mccmnc, 새 상수 keyboardkeyboardHiddennavigationtouchscreencolorMode와 함께 전체 활동 수명 주기 (중지, 소멸, 다시 생성)를 트리거해야 하는 구성 변경사항을 지정할 수 있습니다.

앱 준비

Google에서는 사용자가 쉽게 사용할 수 있도록 도구와 문서를 출시했습니다. 집중적인 블로그 게시물에서 자세한 안내와 일반적인 문제를 해결하기 위한 전략을 확인하세요. 방향이나 가로세로 비율을 제한하는 옵션이 더 이상 제공되지 않으므로 앱은 전체 범위의 가로세로 비율에 걸쳐 창 크기에 맞는 가로 모드 및 세로 모드 레이아웃을 지원해야 합니다. Pixel Tablet 또는 Pixel Fold 에뮬레이터 (targetSdkPreview = "CinnamonBun"로 구성됨)로 Android 17 베타 1을 사용하거나 앱 호환성 프레임워크를 사용하여 Android 16 기기에서 UNIVERSAL_RESIZABLE_BY_DEFAULT을 사용 설정하여 앱을 테스트하는 것이 좋습니다.

성능

잠금 없는 MessageQueue

Android 17에서 SDK 37 이상을 타겟팅하는 앱은 구현이 잠금 해제된 android.os.MessageQueue의 새로운 구현을 수신합니다. 새 구현은 성능을 개선하고 누락된 프레임을 줄이지만 MessageQueue 비공개 필드와 메서드를 반영하는 클라이언트를 중단할 수 있습니다.

세대별 가비지 컬렉션

Android 17에서는 ART의 동시 표시-압축 컬렉터에 세대별 가비지 컬렉션을 도입합니다. 이 최적화는 전체 힙 컬렉션과 함께 리소스 집약도가 낮은 젊은 세대 컬렉션을 더 자주 도입하여 전체 가비지 컬렉션 CPU 비용과 시간 지속 기간을 줄이는 것을 목표로 합니다. Google Play 시스템 업데이트를 통해 Android 12 (API 수준 31) 이상을 실행하는 10억 대 이상의 기기에서도 ART 개선사항을 사용할 수 있습니다.

정적 최종 필드가 이제 진정으로 최종이 됨

Android 17부터 Android 17 이상을 타겟팅하는 앱은 'static final' 필드를 수정할 수 없으므로 런타임에서 성능 최적화를 더 적극적으로 적용할 수 있습니다. 리플렉션 (및 심층 리플렉션)을 통해 이를 시도하면 항상 IllegalAccessException이 발생합니다. JNI의 SetStatic<Type>Field 메서드 패밀리를 통해 수정하면 애플리케이션이 즉시 비정상 종료됩니다.

맞춤 알림 보기 제한사항

메모리 사용량을 줄이기 위해 맞춤 알림 뷰의 크기를 제한합니다. 이번 업데이트로 앱이 URI를 사용하여 기존 제한을 우회할 수 있는 허점이 해결됩니다. 이 동작은 타겟 SDK 버전으로 관리되며 API 37 이상을 타겟팅하는 앱에 적용됩니다.

새 성능 디버깅 ProfilingManager 트리거

성능 문제를 디버그하기 위한 심층 데이터를 수집할 수 있도록 ProfilingManager에 여러 새로운 시스템 트리거가 도입되었습니다. 이러한 트리거는 TRIGGER_TYPE_COLD_STARTTRIGGER_TYPE_OOMTRIGGER_TYPE_KILL_EXCESSIVE_CPU_USAGE입니다.

새 시스템 트리거를 설정하는 방법을 알아보려면 트리거 기반 프로파일링 및 프로파일링 데이터 가져오기 및 분석 문서를 참고하세요.

미디어 및 카메라

Android 17은 원활한 전환, 표준화된 음량과 같은 기능을 통해 미디어 및 카메라 앱에 전문가 수준의 도구를 제공합니다.

동적 카메라 세션 업데이트

CameraCaptureSession에 updateOutputConfigurations()를 도입했습니다. 이를 통해 전체 카메라 캡처 세션을 재구성하지 않고도 출력 표면을 동적으로 연결하고 분리할 수 있습니다. 이 변경사항을 통해 앱이 카메라 시작 중에 필요할 수 있는 모든 카메라 출력 표면을 구성하고 유지하는 데 드는 메모리 비용과 코드 복잡성 없이 카메라 사용 사례와 모드 (예: 스틸 이미지 촬영과 동영상 촬영) 간에 원활하게 전환할 수 있습니다. 이렇게 하면 작업 중에 사용자에게 보이는 글리치나 화면 멈춤을 없앨 수 있습니다.

fun updateCameraSession(session: CameraCaptureSession, newOutputConfigs:  List<OutputConfiguration>)) {
    // Dynamically update the session without closing and reopening
    try {
        
        // Update the output configurations
        session.updateOutputConfigurations(newOutputConfigs)
    } catch (e: CameraAccessException) {
        // Handle error
    }
}

논리 멀티 카메라 기기 메타데이터

이제 여러 실제 카메라 센서를 결합하는 논리 카메라로 작업할 때 기본 카메라뿐만 아니라 캡처에 참여하는 모든 활성 실제 카메라에서 추가 메타데이터를 요청할 수 있습니다. 이전에는 보조 활성 카메라에서 메타데이터를 가져오기 위해 (예: 팔로워 카메라가 활성 상태인 줌의 렌즈 전환 중) 불필요한 실제 스트림을 할당하는 등의 해결 방법을 구현해야 했습니다. 이 기능은 CaptureRequest 및 CaptureResult에 새 키인 LOGICAL_MULTI_CAMERA_ADDITIONAL_RESULTS를 도입합니다. CaptureRequest에서 이 키를 ON으로 설정하면 TotalCaptureResult에 이러한 추가 활성 실제 카메라의 메타데이터가 포함됩니다. TotalCaptureResult.getPhysicalCameraTotalResults()를 사용하여 이 포괄적인 메타데이터에 액세스하면 카메라 애플리케이션에서 리소스 사용을 최적화할 수 있는 자세한 정보를 얻을 수 있습니다.

Versatile Video Coding (VVC) 지원

Android 17에서는 다용도 동영상 코딩 (VVC) 표준을 지원합니다. 여기에는 MediaFormat에서 video/vvc MIME 유형을 정의하고, MediaCodecInfo에 새로운 VVC 프로필을 추가하고, MediaExtractor에 지원을 통합하는 작업이 포함됩니다. 이 기능은 하드웨어 디코딩을 지원하고 지원 가능한 드라이버가 있는 기기에 제공됩니다.

동영상 녹화의 일정한 품질

MediaRecorder에 setVideoEncodingQuality()를 추가했습니다. 이를 통해 동영상 인코더의 고정 품질 (CQ) 모드를 구성할 수 있으므로 간단한 비트 전송률 설정을 넘어 동영상 화질을 더 세밀하게 제어할 수 있습니다.

백그라운드 오디오 강화

Android 17부터 오디오 프레임워크는 오디오 재생, 오디오 포커스 요청, 볼륨 변경 API를 비롯한 백그라운드 오디오 상호작용에 제한을 적용하여 이러한 변경사항이 사용자에 의해 의도적으로 시작되도록 합니다. 

애플리케이션이 유효한 수명 주기에 있지 않은 동안 앱이 오디오 API를 호출하려고 하면 예외가 발생하거나 실패 메시지가 제공되지 않고 오디오 재생 및 볼륨 변경 API가 자동으로 실패합니다. 오디오 포커스 API가 AUDIOFOCUS_REQUEST_FAILED 결과 코드로 실패합니다.

개인정보 보호 및 보안

일반 텍스트 트래픽 속성 지원 중단

android:usesCleartextTraffic 속성은 이제 지원 중단되었습니다. 앱이 Android 17 이상을 타겟팅하고 해당 네트워크 보안 구성 없이 usesCleartextTraffic="true"를 사용하는 경우 일반 텍스트 트래픽이 기본적으로 허용되지 않습니다. 세부적인 제어를 위해 네트워크 보안 구성 파일로 이전하는 것이 좋습니다.

HPKE 하이브리드 암호화

HPKE 하이브리드 암호화 구현을 위한 공개 서비스 제공업체 인터페이스 (SPI)가 도입되어 공개 키와 대칭 암호화 (AEAD)의 조합을 사용한 보안 통신이 가능해집니다.

연결 및 통신

향상된 VoIP 통화 기록

앱 VoIP 통화 기록 통합을 위한 사용자 환경설정 관리가 도입됩니다. 여기에는 시스템 다이얼러에서 발신자 및 참여자 아바타 URI 지원이 포함되어 통화 기록 개인 정보 보호에 대한 세부적인 사용자 제어가 가능하고 통합 VoIP 통화 기록의 시각적 표시가 풍부해집니다.

Wi-Fi 범위 지정 및 근접성

Wi-Fi 범위 지정이 새로운 근접 감지 기능으로 향상되어 지속적인 범위 지정과 보안 P2P 검색을 지원합니다. Wi-Fi Aware 범위 지정 업데이트에는 11az 보안 범위 지정을 위한 피어 핸들 및 PMKID 캐싱을 위한 새로운 API가 포함됩니다.

개발자 생산성 및 도구

컴패니언 기기 앱 업데이트

기기 구분 및 권한 처리를 개선하기 위해 CompanionDeviceManager에 두 가지 새로운 프로필이 도입되었습니다.

  • 의료 기기: 이 프로필을 사용하면 의료 기기 모바일 애플리케이션이 탭 한 번으로 필요한 모든 권한을 요청하여 설정 프로세스를 간소화할 수 있습니다.
  • 피트니스 트래커: DEVICE_PROFILE_FITNESS_TRACKER 프로필을 사용하면 호환 앱이 피트니스 트래커를 관리하고 있음을 명시적으로 나타낼 수 있습니다. 이렇게 하면 기존 시계 역할 권한을 재사용하면서 고유한 아이콘으로 정확한 사용자 환경을 보장할 수 있습니다.

또한 CompanionDeviceManager는 이제 기기 연결 및 근처 기기 권한 요청을 위한 통합 대화상자를 제공합니다. AssociationRequest.Builder의 새로운 setExtraPermissions 메서드를 활용하여 기존 연결 흐름 내에서 근처 권한 메시지를 번들로 묶어 사용자에게 표시되는 대화상자 수를 줄일 수 있습니다.

Android 17 시작하기

지원되는 Pixel 기기를 등록하면 이 업데이트와 향후 Android 베타 업데이트를 무선으로 받을 수 있습니다. Pixel 기기가 없다면 Android 스튜디오에서 Android Emulator와 함께 64비트 시스템 이미지를 사용하면 됩니다.

현재 Android 베타 프로그램에 참여하고 있다면 베타 1 무선 업데이트가 제공됩니다.

Android 26Q1 베타를 사용 중이며 26Q1의 최종 안정화 버전을 사용하고 베타를 종료하려면 26Q2 베타 1의 무선 업데이트를 무시하고 26Q1 출시를 기다려야 합니다.

의견을 기다리고 있으니 의견 페이지에서 문제를 신고하고 기능 요청을 제출해 주세요. 의견을 빨리 보낼수록 최종 출시에 더 많이 반영할 수 있습니다.

Android 17을 사용해 최적의 환경에서 개발하려면 Android 스튜디오 (Panda)의 최신 미리보기를 사용하는 것이 좋습니다. 설정을 완료한 후에는 다음 작업을 수행해야 합니다.

  • 새 SDK에 대해 컴파일하고 CI 환경에서 테스트하고 의견 페이지의 추적기에서 문제를 신고하세요.
  • 현재 앱의 호환성을 테스트하고, 앱이 Android 17의 변경사항에 영향을 받는지 확인하고, Android 17을 실행하는 기기나 에뮬레이터에 앱을 설치하여 광범위하게 테스트합니다.

Android 17 출시 주기 내내 미리보기/베타 시스템 이미지와 SDK를 정기적으로 업데이트할 예정입니다. 베타 빌드를 설치하면 이후 모든 프리뷰 및 베타의 무선 업데이트가 자동으로 제공됩니다.

자세한 내용은 Android 17 개발자 사이트를 참고하세요.

대화 참여하기

올해 말 플랫폼 안정성과 Android 17의 최종 안정화 버전 출시를 향해 나아가는 가운데, 여러분의 의견은 여전히 가장 소중한 자산입니다. Canary 채널의 얼리 어답터이든 베타 1에서 테스트하는 앱 개발자이든 커뮤니티에 가입하고 의견을 제출해 보세요. Google은 여러분의 의견을 기다립니다.

작성자:

계속 읽기