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

Функция 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. Подпись используется для проверки происхождения данных конфигурации.

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

Кастомизация

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

Проверка

Тест CTS CtsSignedConfigHostTestCases проверяет реализацию функции.

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

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