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

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

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

لا يمكن تخصيص هذه الميزة. وهي متاحة بالكامل في مشروع Android المفتوح المصدر (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، على بيانات مرمّزة بترميز base-64. القيمة الخاصة بالمفتاح android.settings.global هي قيم الضبط بترميز JSON التي سيتم تطبيقها على الإعدادات العامة في SettingsProvider. قيمة android.settings.global.signature هي توقيع ECDSA-p256 لبيانات JSON. يتم استخدام التوقيع للتحقّق من مصدر بيانات الإعدادات.

الميزة غير مرئية للمستخدم.

التخصيص

هذه الميزة غير مخصّصة للتخصيص. ننصح الشركات المصنّعة الأصلية للجهاز بعدم تعديل الميزة، بما في ذلك استبدال المفاتيح. ومن المحتمل أن تؤدي أي تغييرات في هذا الإصدار إلى عدم عمل AndroidX بشكل صحيح على الأجهزة المتأثرة في المستقبل.

التحقق من صحة البيانات

يتحقّق اختبار CtsSignedConfigHostTestCases في مجموعة أدوات اختبار التوافق (CTS) من تنفيذ الميزة.

يمكنك أيضًا اختبار الميزة يدويًا من خلال تثبيت حزمة APK مناسبة وفحص ناتج adb logcat:

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