Menerapkan Konfigurasi yang Ditandatangani

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

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

Fitur ini tidak dapat disesuaikan. Alat ini sepenuhnya didukung 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. Pengujian CTS CtsSignedConfigHostTestCases menyertakan contoh penggunaan, dan contoh konfigurasi di cts/hostsidetests/signedconfig/app/version1_AndroidManifest.xml.

Implementasi

Anda tidak perlu melakukan upaya apa pun untuk mendukung fitur ini, dan tidak ada persyaratan hardware tertentu.

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 saat library AndroidX mengharuskan antarmuka non-SDK dihapus dari daftar yang tidak diizinkan 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 berisi data berenkode base-64. Nilai untuk kunci android.settings.global adalah nilai konfigurasi yang dienkode JSON yang akan 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.

Penyesuaian

Fitur ini tidak dimaksudkan untuk penyesuaian. OEM tidak dianjurkan untuk mengubah fitur, termasuk mengganti kunci. Setiap perubahan pada kode tersebut kemungkinan akan menyebabkan AndroidX tidak berfungsi dengan baik di perangkat yang terpengaruh di masa mendatang.

Validasi

Pengujian CTS CtsSignedConfigHostTestCases memverifikasi implementasi fitur.

Anda juga dapat menguji fitur 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
...