Функция подписанной конфигурации позволяет встраивать в 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
— это значения конфигурации в формате 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
...