يصف هذا المستند تجزئة واجهة HIDL، وهي آلية لمنع التغييرات غير المقصودة في الواجهة والتأكد من إجراء فحص دقيق لتغييرات الواجهة. هذه الآلية مطلوبة لأنّ واجهات HIDL ذات إصدارات مختلفة، ما يعني أنّه بعد إصدار الواجهة، لا يجب تغييرها إلا في طريقة الحفاظ على الواجهة الثنائية للتطبيق (ABI) (مثل التعليق) التصحيح).
التنسيق
كل دليل جذر للحزمة (أي يتم تعيين android.hardware
إلى
يتم الربط بين hardware/interfaces
أو vendor.foo
و
vendor/foo/hardware/interfaces
) يجب أن يحتوي على
ملف current.txt
يعرض جميع ملفات واجهة HIDL التي تم إصدارها.
# current.txt files support comments starting with a '#' character # this file, for instance, would be vendor/foo/hardware/interfaces/current.txt # Each line has a SHA-256 hash followed by the name of an interface. # They have been shortened in this doc for brevity but they are # 64 characters in length in an actual current.txt file. d4ed2f0e...995f9ec4 vendor.awesome.foo@1.0::IFoo # comments can also go here # types.hal files are also noted in current.txt files c84da9f5...f8ea2648 vendor.awesome.foo@1.0::types # Multiple hashes can be in the file for the same interface. This can be used # to note how ABI sustaining changes were made to the interface. # For instance, here is another hash for IFoo: # Fixes type where "FooCallback" was misspelled in comment on "FooStruct" 822998d7...74d63b8c vendor.awesome.foo@1.0::IFoo
ملاحظة: للمساعدة في تتبّع علامات التجزئة التي تأتي
تفصل Google ملفات HIDL current.txt
عن بعضها
الأقسام: القسم الأول تم إصداره في Android 8 القسم التالي
يتم إصدارها في نظام التشغيل Android 8 MR1. ننصحك بشدة باستخدام
تنسيق مشابه في ملف current.txt
.
تجزئة باستخدام hidl-gen
يمكنك إضافة تجزئة إلى ملف current.txt
يدويًا أو من خلال
باستخدام hidl-gen
. يقدم مقتطف الرمز التالي أمثلة على
الطلبات التي يمكنك استخدامها مع hidl-gen
لإدارة
ملف current.txt
(تم اختصار علامات التجزئة):
hidl-gen -L hash -r vendor.awesome:vendor/awesome/hardware/interfaces -r android.hardware:hardware/interfaces -r android.hidl:system/libhidl/transport vendor.awesome.nfc@1.0::types
9626fd18...f9d298a6 vendor.awesome.nfc@1.0::typeshidl-gen -L hash -r vendor.awesome:vendor/awesome/hardware/interfaces -r android.hardware:hardware/interfaces -r android.hidl:system/libhidl/transport vendor.awesome.nfc@1.0::INfc
07ac2dc9...11e3cf57 vendor.awesome.nfc@1.0::INfchidl-gen -L hash -r vendor.awesome:vendor/awesome/hardware/interfaces -r android.hardware:hardware/interfaces -r android.hidl:system/libhidl/transport vendor.awesome.nfc@1.0
9626fd18...f9d298a6 vendor.awesome.nfc@1.0::types 07ac2dc9...11e3cf57 vendor.awesome.nfc@1.0::INfc f2fe5442...72655de6 vendor.awesome.nfc@1.0::INfcClientCallbackhidl-gen -L hash -r vendor.awesome:vendor/awesome/hardware/interfaces -r android.hardware:hardware/interfaces -r android.hidl:system/libhidl/transport vendor.awesome.nfc@1.0 >> vendor/awesome/hardware/interfaces/current.txt
تحذير: لا تستبدل تجزئة
واجهة إصدارة سابقًا. عند تغيير مثل هذه الواجهة، أضف تجزئة جديدة
في نهاية ملف current.txt
. للحصول على التفاصيل، يمكنك الرجوع إلى
استقرار واجهة التطبيق الثنائية (ABI):
كل مكتبة تعريفات واجهة تم إنشاؤها بواسطة hidl-gen
يتضمن تجزئات، والتي يمكن استردادها من خلال استدعاء
IBase::getHashChain
عند إنشاء "hidl-gen
"
تتحقق من الملف current.txt
في الدليل الجذري
حزمة HAL لمعرفة ما إذا كان قد تم تغيير HAL أم لا:
- إذا لم يتم العثور على تجزئة HAL، تُعتبر الواجهة غير منشورة (في والتطوير) وتدفق التجميع.
- وفي حال العثور على تجزئات، يتم التحقّق منها في الواجهة الحالية:
- إذا تطابقت الواجهة مع التجزئة، تتم متابعة التجميع.
- إذا لم تتطابق الواجهة مع تجزئة، ستتوقف عملية التحويل البرمجي لأن هذا يعني أنه يتم تغيير الواجهة التي تم إصدارها سابقًا.
- ولإجراء تغيير للحفاظ على واجهة التطبيق الثنائية (ABI) (راجع
استقرار واجهة التطبيق الثنائية (ABI))، وملف
current.txt
يجب تعديله قبل أن تتمكن من متابعة التجميع. - ويجب إجراء جميع التغييرات الأخرى من خلال ترقية بسيطة أو رئيسية للإصدار من واجهة pyplot.
- ولإجراء تغيير للحفاظ على واجهة التطبيق الثنائية (ABI) (راجع
استقرار واجهة التطبيق الثنائية (ABI))، وملف
ثبات واجهة التطبيق الثنائية (ABI)
يضم واجهة التطبيق الثنائية (ABI) النظام الثنائي
الارتباطات/اصطلاحات الاتصال/وما إلى ذلك. في حال تغيير واجهة التطبيق الثنائية (ABI) أو واجهة برمجة التطبيقات، لن تظهر
أطول تعمل مع system.img
عامة تم تجميعها باستخدام
من الواجهات الرسمية.
التأكد من تحديد إصدارات من الواجهات وأن واجهة التطبيق الثنائية (ABI) الثابتة هي مهمة لعدة أسباب:
- ويضمن أن يجتاز التنفيذ لديك حزمة اختبار المورّد (VTS)، التي يضعك على المسار الصحيح لإنشاء وكالات السفر عبر الإنترنت المستندة إلى إطار العمل فقط.
- وبصفتك المصنّع الأصلي للجهاز، فإنّه يمكّنك من تقديم حزمة دعم للوحة المفاتيح وسهلة الاستخدام ومتوافقة.
- وهو يساعدك على تتبُّع الواجهات التي يمكن إصدارها. ضع في اعتبارك
current.txt
خريطة لدليل واجهات تتيح لك الاطّلاع على سجلّ وحالة جميع الواجهات المقدَّمة في جذر الحزمة.
عند إضافة تجزئة جديدة لواجهة لها إدخال في
current.txt
، احرص على إضافة علامات التجزئة التي تمثّل فقط
الواجهات التي تحافظ على ثبات واجهة التطبيق الثنائية (ABI). راجِع أنواع التغييرات التالية:
التغييرات مسموح بها |
|
---|---|
التغييرات غير مسموح بها |
|