Реализация подписанной конфигурации

Функция подписанной конфигурации позволяет встраивать конфигурацию ограничений интерфейса, не относящегося к SDK, в APK. Это позволяет удалить из черного списка определенные интерфейсы, не относящиеся к SDK, чтобы AndroidX мог их безопасно использовать. Это позволяет команде AndroidX добавлять поддержку новых функций в уже выпущенных версиях Android. Он поддерживается в Android 10 и более поздних версиях.

Правильная поддержка подписанной конфигурации гарантирует, что библиотеки AndroidX будут правильно работать на устройствах в будущем.

Настройка этой функции невозможна. Он полностью поддерживается в AOSP и не требует от производителей оборудования для его поддержки.

Примеры и источник

Реализация функции на сервере системы на 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.

Клавиши АПК метаданных android.settings.global и android.settings.global.signature оба содержат данные базовые 64-кодированию. Значение ключа android.settings.global является JSON-кодированные значения конфигурации , которые должны применяться к глобальным настройкам в SettingsProvider . Значение android.settings.global.signature является ECDSA-P256 подпись данных JSON. Подпись используется для проверки происхождения данных конфигурации.

Функция не видна пользователю.

Настройка

Эта функция не предназначена для настройки. OEM-производителям не рекомендуется изменять эту функцию, включая замену ключей. Любые изменения могут привести к тому, что AndroidX не будет работать должным образом на затронутых устройствах в будущем.

Проверка

Тест CTS CtsSignedConfigHostTestCases проверяет выполнение функций.

Вы также можете проверить функцию вручную, установив соответствующий APK и осмотр adb logcat вывод:

$ adb install CtsSignedConfigTestAppV1.apk
...
$ adb logcat
...
I SignedConfig: Verified config using production key
...