ویژگی 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
...