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