يتوافق الإصدار 11 من نظام التشغيل Android مع عناصر إنشاء لقطة VNDK ولقطات المورّد، والتي يمكنك استخدامها لإنشاء vendor.img
بغض النظر عن إصدار Android في شجرة المصدر. يتيح ذلك استخدام إصدارات مختلطة من الصور، مثل صورة قديمة خاصة بمورّد وصورة نظام أحدث.
لا يمكن استخدام إصدارات مختلطة من الصور في ما يلي.
Android.mk.
بما أنّ Soong ينشئ لقطة المورّد، لا يتم تسجيل الوحدات المحدّدة فيAndroid.mk
كلقطة مورّد (لا يُضمن أيضًا عمل وحدات SoC الخاصة فيAndroid.mk
).المعقّم لا تتوافق لقطات Vendor وVNDK مع أداة التنظيف، لأنّه يجب إنشاء صيغ أداة التنظيف بشكل منفصل.
لمحة عن نبذات المورّدين
لقطة المورّد هي لقطة يملكها المصنّع الأصلي للجهاز. وهي مجموعة من وحدات C++ مسبقة الإنشاء
مثبَّتة في /vendor
ولكن يتم صيانتها على AOSP. في حال عدم تسجيل لقطة من المورّد للإصدار السابق من Android، قد يؤدي الترقية إلى إصدار جديد من Android إلى تعطُّل قسم المورّد لأنّه يمكن إزالة وحدات لقطة المورّد أو تغييرها بدون توافق واجهة برمجة التطبيقات أو واجهة التطبيق الثنائية.
تحتوي لقطة البائع على الوحدات التالية في 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
. يوضّح المثال التالي ملف ZIP خاصًا بلقطة من بيانات البائع:
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
.