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

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

Надлежащая поддержка Signed Config гарантирует корректную работу библиотек 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.

Ключи метаданных APK android.settings.global и android.settings.global.signature содержат данные, закодированные в base-64. Значение ключа 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
...