Функция Signed Config позволяет встраивать конфигурацию ограничений для интерфейсов, не относящихся к SDK, в APK-файлы. Это позволяет удалять определённые интерфейсы, не относящиеся к 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
представляет собой значения конфигурации в кодировке 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
...