제품 뉴스

Android 17의 네 번째 베타

읽는 데 4분 소요
2026년 4월 16일
Daniel Galpin
Developer Advocate

Android 17이 이 출시 주기의 마지막 예정된 베타인 베타 4에 도달했습니다. 이는 앱 호환성 및 플랫폼 안정성을 위한 중요한 단계입니다. 앱의 사용자 환경을 미세 조정하거나, 원활한 가장자리 간 렌더링을 보장하거나, 최신 API를 활용하는 등 베타 4는 테스트에 필요한 거의 최종 환경을 제공합니다. 

앱, 라이브러리, 도구, 게임 엔진을 준비하세요!

Android SDK, 라이브러리, 도구 또는 게임 엔진을 개발하는 경우 다운스트림 앱 및 게임 개발자가 호환성 문제로 인해 차단되지 않도록 하고 최신 SDK 기능을 타겟팅할 수 있도록 지금 필요한 업데이트를 준비하는 것이 중요합니다. Android 17을 완전히 지원하려면 업데이트가 필요한지 다운스트림 개발자에게 알려주세요.

Android17_Timeline_01_V02.png

테스트에는 Android 17 베타 4를 실행하는 기기 또는 에뮬레이터에 Google Play 또는 기타 수단을 사용하여 프로덕션 앱 또는 라이브러리나 엔진을 사용하는 테스트 앱을 설치하는 것이 포함됩니다. 앱의 모든 흐름을 살펴보고 기능 또는 UI 문제가 없는지 확인하세요. 각 Android 출시에는 개인 정보 보호, 보안, 전반적인 사용자 환경을 개선하는 플랫폼 변경사항이 포함되어 있습니다. 다음을 비롯하여 테스트에 집중하기 위해 Android 17을 실행하고 타겟팅하는 앱에 영향을 미치는 동작 변경사항을 검토하세요.

  • 대형 화면의 크기 조절: Android 17을 타겟팅하면 더 이상 대형 화면에서 방향, 크기 조절, 가로세로 비율 제약 유지를 선택 해제할 수 없습니다.
  • 동적 코드 로드: 앱이 Android 17 이상을 타겟팅하는 경우 DEX 및 JAR 파일에 대해 Android 14에서 도입된 더 안전한 동적 코드 로드 (DCL) 보호 조치가 이제 네이티브 라이브러리로 확장됩니다. System.load()를 사용하여 로드된 모든 네이티브 파일은 읽기 전용으로 표시해야 합니다. 그러지 않으면 시스템에서 UnsatisfiedLinkError가 발생합니다.
  • 기본적으로 CT 사용 설정: 인증서 투명성 (CT)은 기본적으로 사용 설정되어 있습니다. (Android 16에서는 CT를 사용할 수 있지만 앱은 선택.)
  • 로컬 네트워크 보호: Android 17 이상을 타겟팅하는 앱은 기본적으로 로컬 네트워크 액세스가 차단됩니다. 가능한 경우 개인 정보 보호 선택기로 전환하고 광범위하고 지속적인 액세스를 위해 새로운 ACCESS_LOCAL_NETWORK 권한을 사용하세요.
  • 백그라운드 오디오 강화: Android 17부터 오디오 프레임워크는 오디오 재생, 오디오 포커스 요청, 볼륨 변경 API를 비롯한 백그라운드 오디오 상호작용에 대한 제한사항을 적용합니다. 의견을 반영하여 사용 중 FGS 적용 및 알람 오디오 제외와 같은 targetSDK 게이팅을 비롯하여 베타 2 이후 일부 변경사항을 적용했습니다. 자세한 내용은 업데이트된 안내를 참고하세요.

앱 메모리 제한

Android는 기기의 총 RAM을 기반으로 앱 메모리 제한을 도입하여 애플리케이션과 Android 사용자에게 더 안정적이고 결정론적인 환경을 만듭니다. Android 17에서는 시스템 기준을 설정하기 위해 제한사항이 보수적으로 설정되어 있으며, UI 끊김 현상, 배터리 소모 증가, 앱 강제 종료를 초래하는 시스템 전체의 불안정성을 트리거하기 전에 극심한 메모리 누수 및 기타 이상점을 타겟팅합니다. 대다수의 앱 세션에 미치는 영향은 최소화될 것으로 예상되지만 메모리 기준 설정 등 다음 메모리 권장사항을 따르는 것이 좋습니다.

현재 구현에서 앱에 영향을 미친 경우 ApplicationExitInfogetDescription에 "MemoryLimiter" 문자열이 포함됩니다. TRIGGER_TYPE_ANOMALY를 사용하여 트리거 기반 프로파일링을 사용하여 메모리 한도에 도달했을 때 수집되는 힙 덤프를 가져올 수도 있습니다.

unnamed (2).png
Android 스튜디오 프로파일러의 LeakCanary 작업

메모리 누수를 찾는 데 도움이 되도록 Android 스튜디오 Panda는 Android 스튜디오 프로파일러에 LeakCanary 통합을 IDE 내에서 컨텍스트화되고 소스 코드와 완전히 통합된 전용 작업으로 직접 추가합니다.

메모리 사용 공간이 적으면 모든 폼 팩터에서 성능이 더 원활해지고 배터리 사용 시간이 길어지며 프리미엄 환경이 제공됩니다. Android 생태계를 위한 더 빠르고 안정적인 미래를 함께 만들어 갑시다!

앱 이상을 위한 프로파일링 트리거

Android는 리소스 집약적인 동작과 잠재적인 호환성 회귀를 모니터링하는 기기 내 이상 감지 서비스를 도입합니다. ProfilingManager와 통합된 이 서비스를 사용하면 앱이 특정 시스템 감지 이벤트에 의해 트리거되는 프로파일링 아티팩트를 수신할 수 있습니다.

_TRIGGER_TYPE_ANOMALY_ 트리거를 사용하여 과도한 바인더 호출 및 과도한 메모리 사용과 같은 시스템 성능 문제를 감지합니다. 앱이 OS 정의 메모리 한도를 위반하면 이상 트리거를 통해 개발자는 앱별 힙 덤프를 수신하여 메모리 문제를 식별하고 해결할 수 있습니다. 또한 과도한 바인더 스팸의 경우 이상 트리거는 바인더 트랜잭션에 대한 스택 샘플링 프로필을 제공합니다.

이 API 콜백은 시스템에서 적용하는 모든 시행 조치 전에 발생합니다. 예를 들어 개발자가 메모리 한도 초과로 인해 시스템에서 앱이 종료되기 전에 디버그 데이터를 수집하는 데 도움이 될 수 있습니다. 트리거 사용 방법을 알아보려면 트리거 기반 프로파일링에 관한 문서를 참고하세요.

    val profilingManager = applicationContext.getSystemService(ProfilingManager::class.java)
    val triggers = ArrayList<ProfilingTrigger>()  
    triggers.add(ProfilingTrigger.Builder(
                 ProfilingTrigger.TRIGGER_TYPE_ANOMALY))
    val mainExecutor: Executor = Executors.newSingleThreadExecutor()
    val resultCallback = Consumer<ProfilingResult> { profilingResult ->
        if (profilingResult.errorCode != ProfilingResult.ERROR_NONE) {
            // upload profile result to server for further analysis          
            setupProfileUploadWorker(profilingResult.resultFilePath)
        } 
    profilingManager.registerForAllProfilingResults(mainExecutor, resultCallback)
    profilingManager.addProfilingTriggers(triggers)
}

Android 키 저장소의 양자 내성 암호화 (PQC)

Android 키 저장소는 지원을 추가했습니다. NIST 표준화 ML-DSA (모듈 격자 기반 디지털 서명 알고리즘)에 대한 지원되는 기기에서는 ML-DSA 키를 생성하고 이를 사용하여 기기의 보안 하드웨어에서 양자 내성 서명을 생성할 수 있습니다. Android 키 저장소는 표준 Java 암호화 아키텍처 API(KeyPairGeneratorKeyFactory, Signature)를 통해 ML-DSA-65 및 ML-DSA-87 알고리즘 변형을 노출합니다. 자세한 내용은 개발자 문서를 참고하세요.

KeyPairGenerator generator = KeyPairGenerator.getInstance(
        ML-DSA-65, "AndroidKeyStore");
generator.initialize(
        new KeyGenParameterSpec.Builder(
                my-key-alias,
                KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY)
        .build());
KeyPair keyPair = generator.generateKeyPair();

Android 17 시작하기

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

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

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

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

  • 새 SDK에서 컴파일하고 CI 환경에서 테스트하고 의견 페이지의 트래커에서 문제를 신고합니다.
  • 현재 앱의 호환성을 테스트하고, 앱이 Android 17의 변경사항에 영향을 받는지 알아보고, Android 17을 실행하는 기기 또는 에뮬레이터에 앱을 설치하고 광범위하게 테스트합니다.

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

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

대화 참여하기

의견은 Google의 가장 소중한 자산입니다. _카나리아 채널의 얼리 어답터_이든 _베타 4에서 테스트하는 앱 개발자_이든 커뮤니티에 가입하고 의견을 제출해 보세요. 여러분의 의견을 기다립니다.

작성자:

계속 읽기