پیاده سازی Signed Config

ویژگی Signed Config امکان تعبیه پیکربندی محدودیت‌های رابط کاربری غیر SDK را در APKها فراهم می‌کند. این امر امکان حذف رابط‌های کاربری غیر SDK خاص از لیست سیاه را فراهم می‌کند تا AndroidX بتواند با خیال راحت از آنها استفاده کند. این امر به تیم AndroidX اجازه می‌دهد تا پشتیبانی از ویژگی‌های جدید را در نسخه‌های اندروید که قبلاً منتشر شده‌اند، اضافه کند. این ویژگی در اندروید ۱۰ و بالاتر پشتیبانی می‌شود.

پشتیبانی صحیح از Signed Config تضمین می‌کند که کتابخانه‌های AndroidX در آینده به درستی روی دستگاه‌ها کار کنند.

هیچ سفارشی‌سازی برای این ویژگی امکان‌پذیر نیست. این ویژگی به‌طور کامل در 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 از لیست سیاه داشته باشند، مقادیر این کلیدها توسط تیم اندروید و/یا به عنوان بخشی از AndroidX منتشر خواهد شد.

کلیدهای فراداده APK android.settings.global و android.settings.global.signature هر دو حاوی داده‌های کدگذاری شده با پایه ۶۴ هستند. مقدار مربوط به کلید android.settings.global ، مقادیر پیکربندی کدگذاری شده با JSON است که باید در تنظیمات سراسری در SettingsProvider اعمال شود. مقدار مربوط به android.settings.global.signature یک امضای ECDSA-p256 از داده‌های JSON است. این امضا برای تأیید منشأ داده‌های پیکربندی استفاده می‌شود.

این ویژگی برای کاربر قابل مشاهده نیست.

سفارشی‌سازی

این ویژگی برای سفارشی‌سازی در نظر گرفته نشده است. به تولیدکنندگان اصلی تجهیزات (OEM) توصیه نمی‌شود که این ویژگی را تغییر دهند، از جمله تعویض کلیدها. هرگونه تغییر در آن احتمالاً باعث می‌شود AndroidX در آینده به درستی روی دستگاه‌های آسیب‌دیده کار نکند.

اعتبارسنجی

آزمون CTS CtsSignedConfigHostTestCases پیاده‌سازی این ویژگی را تأیید می‌کند.

همچنین می‌توانید این ویژگی را به صورت دستی با نصب یک APK مناسب و بررسی خروجی adb logcat آزمایش کنید:

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