Menerapkan Konfigurasi yang Ditandatangani

Fitur Signed Config memungkinkan penyematan konfigurasi pembatasan antarmuka non-SDK di APK. Hal ini memungkinkan penghapusan antarmuka non-SDK tertentu dari daftar hitam, agar AndroidX dapat menggunakannya dengan aman. Hal ini memungkinkan tim AndroidX untuk menambahkan dukungan fitur baru pada versi Android yang telah dirilis. Ini didukung di Android 10 dan lebih baru.

Mendukung Signed Config dengan benar memastikan bahwa pustaka AndroidX akan berfungsi dengan benar di perangkat di masa mendatang.

Penyesuaian fitur ini tidak dapat dilakukan. Ini didukung penuh di AOSP dan tidak memerlukan upaya OEM untuk mendukungnya.

Contoh dan sumber

Implementasi fitur ada di server sistem di frameworks/base/services/core/java/com/android/server/signedconfig . Tes CTS CtsSignedConfigHostTestCases mencakup contoh penggunaan, dan contoh konfigurasi di cts/hostsidetests/signedconfig/app/version1_AndroidManifest.xml .

Penerapan

Tidak diperlukan upaya untuk mendukung fitur ini, dan tidak ada persyaratan perangkat keras khusus.

Fitur ini menggunakan dua kunci metadata aplikasi untuk menyematkan konfigurasi dan tanda tangan di dalam APK. Kunci tersebut adalah android.settings.global dan android.settings.global.signature . Jika atau ketika pustaka AndroidX memerlukan antarmuka non-SDK untuk dihapus dari daftar hitam di masa mendatang, nilai untuk kunci ini akan dipublikasikan oleh tim Android dan/atau sebagai bagian dari AndroidX.

Kunci metadata APK android.settings.global dan android.settings.global.signature keduanya berisi data yang dikodekan base-64. Nilai untuk kunci android.settings.global adalah nilai konfigurasi berenkode JSON untuk diterapkan ke setelan global di SettingsProvider . Nilai untuk android.settings.global.signature adalah tanda tangan ECDSA-p256 dari data JSON. Tanda tangan digunakan untuk memverifikasi asal data konfigurasi.

Fitur ini tidak terlihat oleh pengguna.

Kustomisasi

Fitur ini tidak dimaksudkan untuk penyesuaian. OEM tidak disarankan untuk memodifikasi fitur tersebut, termasuk mengganti kunci. Perubahan apa pun kemungkinan besar menyebabkan AndroidX tidak berfungsi dengan baik pada perangkat yang terpengaruh di masa mendatang.

Validasi

Tes CTS CtsSignedConfigHostTestCases memverifikasi implementasi fitur.

Anda juga dapat menguji fitur ini secara manual dengan menginstal APK yang sesuai dan memeriksa output adb logcat :

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