Функция Signed Config позволяет встраивать в 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 содержат данные, закодированные в формате Base64. Значение для ключа android.settings.global – это закодированные в формате JSON значения конфигурации, которые будут применены к глобальным настройкам в SettingsProvider. Значение android.settings.global.signature – это подпись ECDSA-p256 данных JSON.
Подпись используется для проверки источника данных конфигурации.
Функция не видна пользователям.
Настройка канала
Функция не предназначена для настройки. Производителям оригинального оборудования не рекомендуется изменять эту функцию, в том числе заменять клавиши. Любые изменения могут привести к тому, что AndroidX не будет работать должным образом на затронутых устройствах.
Проверка
Тест CTS CtsSignedConfigHostTestCases проверяет реализацию функции.
Вы также можете протестировать функцию вручную, установив подходящий APK-файл и проверив выходные данные adb logcat:
$ adb install CtsSignedConfigTestAppV1.apk
...
$ adb logcat
...
I SignedConfig: Verified config using production key
...