이전 버전과 마찬가지로 Android 17에는 앱에 영향을 미칠 수 있는 동작 변경사항이 포함되어 있습니다. 다음 동작 변경사항은 Android 17 이상을 타겟팅하는 앱에만 적용됩니다. 앱이 Android 17 이상을 타겟팅하는 경우 이러한 동작을 지원하도록 앱을 수정해야 합니다(해당하는 경우).
앱의 targetSdkVersion과 관계없이 Android 17에서 실행되는 모든 앱에 영향을 미치는 동작 변경사항 목록도 검토해야 합니다.
핵심 기능
Android 17에는 Android 시스템의 다양한 핵심 기능을 수정하거나 확장하는 다음과 같은 변경사항이 포함되어 있습니다.
MessageQueue의 새로운 잠금 해제 구현
Android 17부터 Android 17 이상을 타겟팅하는 앱은 android.os.MessageQueue의 새로운 잠금 해제 구현을 수신합니다. 새 구현은 성능을 개선하고 누락된 프레임을 줄이지만 MessageQueue 비공개 필드와 메서드를 반영하는 클라이언트를 중단할 수 있습니다.
완화 전략을 비롯한 자세한 내용은 MessageQueue 동작 변경 안내를 참고하세요.
접근성
Android 17에서는 접근성을 개선하기 위해 다음과 같이 변경됩니다.
복잡한 IME 물리적 키보드 입력의 접근성 지원
This feature introduces new AccessibilityEvent and TextAttribute
APIs to enhance screen reader spoken feedback for CJKV language input. CJKV IME
apps can now signal whether a text conversion candidate has been selected during
text composition. Apps with edit fields can specify text change types when
sending text changed accessibility events.
For example, apps can specify that a text change occurred during text
composition, or that a text change resulted from a commit.
Doing this enables accessibility
services such as screen readers to deliver more precise feedback based on the
nature of the text modification.
App adoption
IME Apps: When setting composing text in edit fields, IMEs can use
TextAttribute.Builder.setTextSuggestionSelected()to indicate whether a specific conversion candidate was selected.Apps with Edit Fields: Apps that maintain a custom
InputConnectioncan retrieve candidate selection data by callingTextAttribute.isTextSuggestionSelected(). These apps should then callAccessibilityEvent.setTextChangeTypes()when dispatchingTYPE_VIEW_TEXT_CHANGEDevents. Apps targeting Android 17 that use the standardTextViewwill have this feature enabled by default. (That is,TextViewwill handle retrieving data from the IME and setting text change types when sending events to accessibility services).Accessibility Services: Accessibility services that process
TYPE_VIEW_TEXT_CHANGEDevents can callAccessibilityEvent.getTextChangeTypes()to identify the nature of the modification and adjust their feedback strategies accordingly.
보안
Android 17에서는 기기 및 앱 보안이 다음과 같이 개선되었습니다.
활동 보안
In Android 17, the platform continues its shift toward a "secure-by-default" architecture, introducing a suite of enhancements designed to mitigate high-severity exploits such as phishing, interaction hijacking, and confused deputy attacks. This update requires developers to explicitly opt in to new security standards to maintain app compatibility and user protection.
Key impacts for developers include:
- BAL hardening & improved opt-in: We are refining Background Activity
Launch (BAL) restrictions by extending protections to
IntentSender. Developers must migrate away from the legacyMODE_BACKGROUND_ACTIVITY_START_ALLOWEDconstant. Instead, you should adopt granular controls likeMODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE, which restricts activity starts to scenarios where the calling app is visible, significantly reducing the attack surface. - Adoption tools: Developers should utilize strict mode and updated lint checks to identify legacy patterns and ensure readiness for future target SDK requirements.
localhost 보호
To improve platform security and user privacy, Android 17
introduces a new install-time permission, USE_LOOPBACK_INTERFACE. This change
restricts cross-app and cross-profile communication over the loopback interface
(for example, 127.0.0.1 or ::1), which was previously implicitly allowed
with the INTERNET permission. For apps targeting
Android 17 or higher, the following rules apply:
- Mutual consent required: cross-app and cross-profile communication is
now blocked by default. For a connection to succeed, both the sending app
and the receiving app must explicitly declare the
USE_LOOPBACK_INTERFACEpermission in their manifests. - Intra-app traffic exempt: Loopback communication within the same app (intra-app communication) remains unaffected and does not require this new permission.
- Target SDK behavior:
- App targets Android 17 or higher: The permission
must be explicitly requested. If it is missing, socket operations (such
as TCP connect or UDP send) fail, typically returning an
EPERM(operation not permitted) error. - App targets API level 36 or lower: The permission is
treated as a split permission on
INTERNET. Apps targeting lower API levels are auto-granted this permission if they holdINTERNET.
- App targets Android 17 or higher: The permission
must be explicitly requested. If it is missing, socket operations (such
as TCP connect or UDP send) fail, typically returning an
- Compatibility warning: If a receiving app updates its target to Android 17 but fails to request this permission, incoming connections from other apps are be rejected, even if the sending app targets a lower API level.
기본적으로 CT 사용 설정
앱이 Android 17 이상을 타겟팅하는 경우 인증서 투명성 (CT)이 기본적으로 사용 설정됩니다. (Android 16에서는 CT를 사용할 수 있지만 앱이 선택해야 했습니다.)
더 안전한 네이티브 DCL—C
If your app targets Android 17 or higher, the Safer Dynamic Code Loading (DCL) protection introduced in Android 14 for DEX and JAR files now extends to native libraries.
All native files loaded using System.load() must be marked as read-only.
Otherwise, the system throws UnsatisfiedLinkError.
We recommend that apps avoid dynamically loading code whenever possible, as doing so greatly increases the risk that an app can be compromised by code injection or code tampering.
기기 폼 팩터
Android 17에는 다양한 기기 크기와 폼 팩터에서 사용자 환경을 개선하기 위한 다음 변경사항이 포함되어 있습니다.
대형 화면 (sw>=600dp)에서 방향, 크기 조절, 가로세로 비율 제약을 무시하도록 플랫폼 API 변경
Android 16에서는 API 수준 36 이상을 타겟팅하는 앱의 경우 대형 화면 (sw >= 600dp)에서 방향, 가로세로 비율, 크기 조절 제한을 무시하도록 플랫폼 API 변경사항을 도입했습니다. 개발자는 SDK 36으로 이러한 변경사항을 선택 해제할 수 있지만 Android 17 이상을 타겟팅하는 앱에서는 더 이상 선택 해제할 수 없습니다.
자세한 내용은 방향 및 크기 조절 제한사항이 무시됨을 참고하세요.