پیاده‌سازی پیکربندی امضاشده

ویژگی «پیکربندی امضاشده» امکان جاسازی پیکربندی محدودیت‌های میانای غیر کیت توسعه نرم‌افزار را در فایل‌های APK فراهم می‌کند. این کار امکان حذف میاناهای غیرکیت توسعه نرم‌افزار خاصی را از فهرست سیاه فراهم می‌کند تا AndroidX بتواند به‌طور ایمن از آن‌ها استفاده کند. این کار به تیم AndroidX اجازه می‌دهد تا پشتیبانی از ویژگی‌های جدید را به نسخه‌های Android که قبلاً منتشر شده‌اند اضافه کند. این ویژگی در Android 10 و نسخه‌های جدیدتر پشتیبانی می‌شود.

پشتیبانی صحیح از «پیکربندی امضاشده» تضمین می‌کند که کتابخانه‌های 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 نیاز داشته باشند واسط‌های غیر کیت توسعه نرم‌افزار از فهرست سیاه در آینده برداشته شوند، مقادیر این کلیدها توسط تیم 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
...