서명된 구성 기능을 사용하면 APK에 비 SDK 인터페이스 제한의 구성을 포함할 수 있습니다. 이렇게 하면 블랙리스트에서 특정 비 SDK 인터페이스를 제거하여 AndroidX에서 안전하게 사용할 수 있습니다. 이를 통해 AndroidX 팀은 이미 출시된 Android 버전의 새로운 기능에 대한 지원을 추가할 수 있습니다. Android 10 이상에서 지원됩니다.
Signed Config를 적절하게 지원하면 AndroidX 라이브러리가 향후 기기에서 올바르게 작동할 것입니다.
이 기능은 사용자 정의할 수 없습니다. AOSP에서 완벽하게 지원되며 이를 지원하기 위해 OEM의 노력이 필요하지 않습니다.
예제 및 소스
기능 구현은 frameworks/base/services/core/java/com/android/server/signedconfig
의 시스템 서버에 있습니다. CTS 테스트 CtsSignedConfigHostTestCases
에는 사용 예와 cts/hostsidetests/signedconfig/app/version1_AndroidManifest.xml
의 구성 예가 포함되어 있습니다.
구현
기능을 지원하기 위해 노력이 필요하지 않으며 특정 하드웨어 요구 사항도 없습니다.
이 기능은 두 개의 애플리케이션 메타데이터 키를 사용하여 APK 내부에 구성과 서명을 포함합니다. 해당 키는 android.settings.global
및 android.settings.global.signature
입니다. AndroidX 라이브러리에서 향후 블랙리스트에서 비 SDK 인터페이스를 제거해야 하는 경우 이러한 키의 값은 Android 팀 및/또는 AndroidX의 일부로 게시됩니다.
APK 메타데이터 키 android.settings.global
및 android.settings.global.signature
에는 모두 base-64로 인코딩된 데이터가 포함되어 있습니다. android.settings.global
키의 값은 SettingsProvider
의 전역 설정에 적용할 JSON으로 인코딩된 구성 값입니다. android.settings.global.signature
의 값은 JSON 데이터의 ECDSA-p256 서명입니다. 서명은 구성 데이터의 출처를 확인하는 데 사용됩니다.
이 기능은 사용자에게 표시되지 않습니다.
커스터마이징
이 기능은 사용자 지정을 위한 것이 아닙니다. OEM은 키 교체를 포함하여 기능을 수정하지 않는 것이 좋습니다. 이를 변경하면 향후 영향을 받는 기기에서 AndroidX가 제대로 작동하지 않을 수 있습니다.
확인
CTS 테스트 CtsSignedConfigHostTestCases
는 기능 구현을 확인합니다.
적절한 APK를 설치하고 adb logcat
출력을 검사하여 기능을 수동으로 테스트할 수도 있습니다.
$ adb install CtsSignedConfigTestAppV1.apk
...
$ adb logcat
...
I SignedConfig: Verified config using production key
...