پیاده سازی Signed Config

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

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

کلیدهای فراداده APK android.settings.global و android.settings.global.signature هر دو حاوی داده های کدگذاری شده پایه 64 هستند. مقدار کلید 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
...