서명된 Config 기능을 사용하면 비 SDK 인터페이스 제한의 구성을 APK에 삽입할 수 있습니다. 이렇게 하면 블랙리스트에서 특정 비 SDK 인터페이스를 삭제하여 AndroidX에서 안전하게 사용할 수 있습니다. 따라서 AndroidX팀이 이미 출시된 Android 버전의 새 기능을 추가로 지원할 수 있습니다. 이 기능은 Android 10 이상에서 지원됩니다.
서명된 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
...