إنشاء لقطات للمورّدين

يتوافق 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 يوضّح المثال التالي ملف 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 بغض النظر عن على شجرة المصدر، مما يتيح إنشاء إصدارات مختلطة من الصور. بعد تثبيت كل من لقطة 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.