تنفيذ ميزة "الإعداد الموقّع"

تتيح ميزة "ملف الإعدادات الموقّع" تضمين إعدادات قيود الواجهات غير التابعة لحزمة SDK في حِزم APK. ويتيح ذلك إزالة واجهات معيّنة غير متوفرة في حزمة SDK من القائمة السوداء، للسماح لمكتبة AndroidX باستخدامها بأمان. ويتيح ذلك لفريق AndroidX إضافة دعم للميزات الجديدة على إصدارات Android التي تم طرحها سابقًا. وهي متوافقة مع الإصدار 10 من نظام التشغيل Android والإصدارات الأحدث.

يضمن توفير الدعم المناسب لـ Signed Config أنّ مكتبات AndroidX ستعمل بشكل صحيح على الأجهزة في المستقبل.

لا يمكن تخصيص هذه الميزة. وهي متاحة بالكامل في مشروع Android مفتوح المصدر (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
...