يتيح نظام التشغيل Android 11 استخدام عناصر إنشاء لقطة VNDK
ولقطات المصنّعين، والتي يمكنك استخدامها لإنشاء vendor.img
بغض النظر عن
إصدار Android في شجرة المصدر. يتيح ذلك استخدام إصدارات مختلطة من الصور، مثل
صورة نظام أقدم من موفِّر قديم وصورة نظام أحدث.
لا تتوفّر إصدارات الصور المختلطة في ما يلي:
Android.mk.
بما أنّ تطبيق Sayg ينشئ نبذة عن المورِّدين، فإنّ الوحدات المحدّدة فيAndroid.mk
لا يتم تسجيلها كنبذة عن المورّدين (لا يمكن أيضًا ضمان عمل الوحدات الخاصة بأنظمة المنظومة على الرقاقة (SoC) فيAndroid.mk
).المعقّم: لا تتوافق لقطات المورّد ومجموعة تطوير البرامج (VNDK) مع أداة التعقيم، لأنّه يجب إنشاء الصيغ المتعلّقة بأداة التعقيم بشكل منفصل.
لمحة عن نبذات المورّدين
نبذة المورّد هي نبذة يملكها المصنّع الأصلي للجهاز. وهي مجموعة من وحدات C++ المُنشأة مسبقًا
التي تم تثبيتها في /vendor
ولكن يتم الاحتفاظ بها في AOSP. في حال عدم التقاط لقطة شاشة
للجهة المصنّعة لإصدار Android السابق، قد يؤدي الترقية إلى إصدار Android جديد
إلى إيقاف قسم الجهة المصنّعة لأنّه يمكن إزالة وحدات لقطة الشاشة الخاصة بالجهة المصنّعة
أو تغييرها بدون توافق مع واجهة برمجة التطبيقات أو ABI.
تحتوي لقطة المورّد على الوحدات التالية في AOSP.
- المكتبات المشتركة والثابتة ومكتبات العناوين مع
vendor: true
أوvendor_available: true
- المكتبات الثابتة لمجموعة تطوير البرامج الأصلية للمورّدين (VNDK) التي تتضمّن
vendor_available: true
- ملفات التشغيل والملفات الثنائية بتنسيق
vendor: true
أوvendor_available: true
تُعدّ الوحدات ضمن الدلائل التالية رمزًا للأجهزة يملكها نظام التشغيل SoC ويتم تجاهلها.
device/
vendor/
hardware/
، باستثناءhardware/interfaces
hardware/libhardware
hardware/libhardware_legacy
وقد تتوفّر أيضًا رموز الأجهزة المملوكة للمنظومة على رقاقة (SoC) في الأدلة الأخرى. في الوقت الحالي، لا تتيح لقطات المورّدين ضبط هذه الإعدادات.
إنشاء لقطات لمورّدي السلع
أنشئ لقطة شاشة لمورّد باستخدام الأوامر التالية.
. build/envsetup.sh
lunch target
m dist vendor-snapshot
تنشئ هذه الأوامر ملف vendor-$(TARGET_DEVICE).zip
في
$DIST_DIR
. يعرض المثال التالي ملفًا مضغوطًا للقطة شاشة المورّد:
vendor-$(TARGET_DEVICE).zip
├── arch-arm64-armv8-a
│ ├── binary -> binary files, *.json files
│ ├── header -> *.json files
│ ├── object -> *.o files, *.json files
│ ├── shared -> *.so files, *.json files
│ └── static -> *.a files, *.json files
├── arch-arm-armv8-a -> (arch-arm64-armv8-a)
├── configs -> *.rc files, *.xml files
├── include -> exported header files (*.h, *.hh, etc.)
└── NOTICE_FILES -> license txt files
- تحتوي ملفات JSON على علامات، مثل اسم الوحدة والمجلدات التي تم تصديرها وملفات
init_rc
وملفاتvintf_fragments
. - يحتوي دليل
configs
على الملفَين.rc
و.xml
من علامتَيinit_rc
وvintf_fragments
.
تثبيت لقطات المورّدين
لتثبيت لقطة شاشة لمورّد، انتقِل إلى الدليل الوجهة واستخدِم الأوامر التالية.
python3 development/vendor_snapshot/update.py --local $DIST_DIR --install-dir \
vendor/vendor name/vendor_snapshot VER
ينشئ هذا الأمر
/vendor/vendor name/vendor_snapshot/vVER/$(TARGET_ARCH)/Android.bp
.
يوضح المثال التالي بنية الدليل لنبذة عن المورّد:
vendor/vendor name/vendor_snapshot/
├── v30
│ ├── arm64
│ │ ├── arch-arm64-armv8-a
│ │ │ ├── binary -> (prebuilt libs)
│ │ │ ├── object -> (prebuilt libs)
│ │ │ ├── shared -> (prebuilt libs)
│ │ │ └── static -> (prebuilt libs)
│ │ ├── arch-arm-armv8-a -> (same as above)
│ │ ├── configs -> (config files)
│ │ ├── include -> (exported header files)
│ │ ├── NOTICE_FILES -> (license files)
│ │ └── Android.bp -> (snapshot modules)
│ ├── arm -> (same as above)
│ ├── x86_64 -> (same as above)
│ └── x86 -> (same as above)
└── (other vendor versions) -> (same as above)
إنشاء صور المورّدين
باستخدام عناصر إنشاء لقطة VNDK
ولقطة مطوِّر، يمكنك إنشاء vendor.img
بغض النظر عن إصدار Android
في شجرة المصدر، ما يتيح إنشاء إصدارات مختلطة من
الصور. بعد تثبيت كل من لقطة VNDK ولقطة المورِّد، اضبط
BOARD_VNDK_VERSION
على إصدار المورِّد. مثلاً:
# BoardConfig.mk
BOARD_VNDK_VERSION := 29
عند ضبط BOARD_VNDK_VERSION
على قيمة غير current
، ينفّذ نظام المعالجة
ما يلي:
- تفعيل وحدات لقطات VNDK ووحدات لقطات المصنّعين لنظام التشغيل
BOARD_VNDK_VERSION
تلغي كل وحدة لقطة شاشة وحدة مصدر C++ التي تحمل الاسم نفسه. - يتم ضبط السمة
ro.vndk.version
علىBOARD_VNDK_VERSION
. - تثبيت وحدات لقطات VNDK من
BOARD_VNDK_VERSION
إلىsystem_ext
.