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

يتوافق الإصدار 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.