إنشاء لقطات البائع

يدعم 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 .