لقطة VNDK هي مجموعة من ملفات VNDK-core وVNDK-SP لإصدار Android.
لا يمكنك ترقية قسم النظام إلا إذا كانت سياسة system.img
يتضمن لقطة VNDK المقابلة التي يحتاجها
vendor.img
تم إنشاء لقطات VNDK الرسمية تلقائيًا على خادم إصدار Android
وتم تسجيل الوصول إلى /prebuilts/vndk
في شجرة مصادر Android. بالنسبة
تطوير البرامج، يمكنك إنشاء لقطات VNDK محليًا. تكون لقطات VNDK
متوافقة مع نكهات TARGET_ARCH
Arm و arm64 وx86 وx86_64
إنشاء لقطات
ينشئ خادم إصدار Android عناصر الإصدار وملفات لقطات VNDK باستخدام معلمات الإصدار التالية وأوامر الإصدار.
إنشاء المعلمات
اسم هدف الإصدار هو vndk
. إعدادات هدف الإصدار
كما هو موضح أدناه.
TARGET_PRODUCT |
TARGET_ARCH |
TARGET_ARCH_VARIANT |
---|---|---|
aosp_arm |
arm |
armv7-a-neon |
aosp_arm64 |
arm64 |
armv8-a |
aosp_x86 |
x86 |
x86 |
aosp_x86_64 |
x86_64 |
x86_64 |
TARGET_PRODUCT=aosp_$(TARGET_ARCH)
TARGET_BUILD_VARIANT=user
TARGET_ARCH
هي نفس صورة النظام العامة (GSI). الأقواس المستهدفة (arm
،arm64
،x86
،x86_64
).TARGET_ARCH_VARIANT
بالنسبة إلى الإصدار 28 من اللقطة (Android 9) والإصدارات الأحدث، يتضمن الإعدادات الشائعة المدرجة أعلاه.
إصدار الأوامر
للحصول على اللقطات الرسمية، يمكنك استخدام الإصدار 9 من نظام Android والإصدارات الأحدث
يحتوي على نموذج هدف (vndk
) في
vndk.mk
الذي ينشئ ويخرج VNDK
لقطة إلى $DIST_DIR
. يستخدم ملف ZIP لللقطة التنسيق
android-vndk-$(TARGET_ARCH).zip
مثلاً:
lunch aosp_TARGET_ARCH-user
make -j vndk dist [BOARD_VNDK_VERSION=current]
يستخدم خادم إصدار Android
نص build.sh
البرمجي لإنشاء جميع الأقواس المتوافقة
النكهات باستخدام الأمر التالي.
DIST_DIR=dist_dir development/vndk/snapshot/build.sh
يتم إنشاء لقطة VNDK لإصدار Android من ملف فرع الإصدار.
الإنشاء محليًا
أثناء التطوير، يمكنك إنشاء لقطات VNDK من شجرة مصدر محلي باستخدام الأوامر التالية.
- لإنشاء جميع الأقواس المتوافقة في وقت واحد، نفِّذ النص البرمجي التالي للإصدار.
(
build.sh
).cd $ANDROID_BUILD_TOP
development/vndk/snapshot/build.sh
- لإنشاء
TARGET_ARCH
واحد محدّد، نفِّذ ما يلي: الأوامر.lunch aosp_TARGET_ARCH-user
m -j vndk dist
يتم إنشاء ملف android-vndk-$(TARGET_ARCH).zip
المقابل.
أقل من $DIST_DIR
.
ملفات اللقطات
تتضمن لقطة VNDK الملفات التالية.
- صيغة المورّد للمكتبات المشتركة VNDK-core وVNDK-SP
- وليست هناك حاجة إلى ملفات libs المشتركة الخاصة بـ LL-NDK لأنها متوافقة مع الأنظمة القديمة.
- بالنسبة إلى استهدافات 64 بت، يمكن استخدام
TARGET_ARCH
و تم إنشاء وإدراجTARGET_2ND_ARCH
مكتبة.
- تتوفر قائمة مكتبات VNDK-core وVNDK-SP وLL-NDK وVNDK على
[vndkcore|vndksp|llndk|vndkprivate].libraries.txt
- ملفات الترخيص
module_paths.txt
تسجيل مسارات الوحدات لجميع VNDK وهي مطلوبة للتحقّق من اشتمال مشاريع GPC على مصادر إصداره في شجرة مصادر بيانات Android محددة.
بالنسبة إلى ملف ZIP للقطة VNDK،
android-vndk-$(TARGET_ARCH).zip
، يتم إنشاء مكتبات VNDK مسبقًا
مجمعة في أدلة منفصلة تسمى
arch-$(TARGET_ARCH)-$(TARGET_ARCH_VARIANT)
وفقًا لواجهة التطبيق الثنائية (ABI)
البت. على سبيل المثال، بالنسبة إلى android-vndk-arm64.zip
، libs 64 بت
يتم وضعها ضمن arch-arm64-armv8-a
ويتم وضع libs 32 بت
وضعها ضمن arch-arm-armv8-a
. يوضح المثال أدناه
بنية الدليل لـ Arm64 (TARGET_ARCH=arm64
) VNDK
.SIP (android-vndk-arm64.zip
).
إنشاء لقطات سريعة للمورّدين
يتوافق مع Android 11
مورِّد
لقطات الشاشة، التي تمكّنك من إنشاء vendor.img
بغض النظر عن
إصدار Android في شجرة المصدر. تحتوي لقطة VNDK الافتراضية على
ملفات المكتبة المشتركة (.so
) التي يمكن تثبيتها على الأجهزة
ثم يتم ربطها من البرامج الثنائية للمورّد C++ في وقت التشغيل. للبناء ضد
لقطة VNDK هذه، فأنت بحاجة إلى عناصر إضافية مثل ملفات الرأس
التي تم تصديرها.
إنشاء مثل هذه العناصر (إلى جانب لقطة VNDK) من مصدر محلي الشجرة، استخدم الأمر التالي.
VNDK_SNAPSHOT_BUILD_ARTIFACTS=true development/vndk/snapshot/build.sh
ينشئ هذا الأمر android-vndk-$(TARGET_ARCH).zip
ملف ضمن
$DIST_DIR
المثال أدناه هو ملف ZIP للقطة Arm64 VNDK
من خلال أدوات الإنشاء. تتم إضافة الملفات المكتوبة بخط غامق حديثًا إلى ملف VNDK العادي.
(يظهر في الشكل 1) وتضمين ملفات JSON (التي تخزن
cflags
من كل مكتبة) وجميع ملفات العناوين التي تم تصديرها.
android-vndk-arm64.zip ├── arch-arm64-armv8-a │ └── shared │ ├── vndk-core -> *.so files, *.json files │ └── vndk-sp -> *.so files, *.json files ├── arch-arm-armv8-a -> (same as arch-arm64-armv8-a) ├── configs -> *.libraries.txt, module_paths.txt, module_names.txt ├── include -> exported header files (*.h, *.hh, etc.) └── NOTICE_FILES -> license txt files
تحميل لقطات VNDK
يتم التحقق من لقطات VNDK في شجرة المصدر ضمن
/prebuilts/vndk/vVER
، حيث
الدالة VER
تساوي إصدار لقطة VNDK
(الذي يتوافق مع إصدار حزمة تطوير البرامج (SDK) لإصدار Android ذي الصلة). بالنسبة
على سبيل المثال، تحتوي لقطة Android 8.1 VNDK على الإصدار 27.
استخدام النص البرمجي update.py
نص update.py
البرمجي
(/development/vndk/snapshot/update.py
) تلقائيًا
إضافة لقطة VNDK مُنشأة مسبقًا إلى شجرة المصدر. يكتشف تلقائيًا
وإنشاء الأدوات وملء الخصائص المرتبطة بشكل مناسب في
تم إنشاء Android.bp
. ينفّذ هذا النص البرمجي المهام التالية:
- في
/prebuilts/vndk/vVER
، يتم استخدامrepo start
لإنشاء فرع جديد في Git. - لجلب عناصر إنشاء لقطة VNDK وفك ضغطها.
- يتم تشغيل
gen_buildfiles.py
لإنشاء ملفات الإصدار تلقائيًا. (Android.bp
). - تشغيل
check_gpl_license.py
للتحقّق من المكتبات المنشأة مسبقًا المرخص لهم بموجب الترخيص العام (GPL) لديهم مصادر تم إصدارها في شجرة المصدر الحالية - يتم استخدام
git commit
لتنفيذ تغييرات جديدة.
استخدام لقطات VNDK تم إنشاؤها محليًا
ويمكنك أيضًا استخدام لقطات VNDK تم إنشاؤها محليًا. عندما --local
تحديد الخيار، يجلب النص البرمجي update.py
لقطة VNDK
إنشاء عناصر من الدليل المحلي المحدد (بدلاً من نظام التشغيل Android
إصدار الخادم) الذي يحتوي على ملفات android-vndk-$(TARGET_ARCH).zip
التي تم إنشاؤها من development/vndk/snapshot/build.sh
. مع
--local
، يتخطى النص البرمجي update.py
بروتوكول الترخيص المفتوح
التحقّق من الترخيص وgit commit
خطوة.
بناء الجملة:
python update.py VER --local local_path
مثال على أمر لتحديث لقطة Android 8.1 VNDK باستخدام الإصدار المحلي
العناصر في اللغة /path/to/local/dir
:
python update.py 27 --local /path/to/local/dir
مثال على بنية دليل للقطة VNDK تم إنشاؤها محليًا:
prebuilts/vndk ├── v30 │ ├── arm64 │ │ ├── arch-arm64-armv8-a -> (prebuilt libs) │ │ ├── arch-arm-armv8-a -> (prebuilt libs) │ │ ├── configs -> (config files) │ │ ├── include -> (exported header files) │ │ └── Android.bp -> (VNDK modules with cflags) │ ├── arm -> (same as above) │ ├── x86_64 -> (same as above) │ ├── x86 -> (same as above) │ ├── common │ │ ├── NOTICE_FILES -> (license files) │ │ └── Android.bp -> (license file modules) │ └── Android.bp -> (*.libraries.30.txt modules) └── (other VNDK versions) -> (same as above)تُضاف تلقائيًا عناصر الإنشاء المحلي إذا تم إنشاء العناصر باستخدام
VNDK_SNAPSHOT_BUILD_ARTIFACTS=true
تثبيت لقطات VNDK
تثبّت صورة النظام مكتبات لقطات VNDK في وقت الإصدار باستخدام
المعلومات في BOARD_VNDK_VERSION
،
PRODUCT_EXTRA_VNDK_VERSIONS
وro.vndk.version
يمكنك التحكم في لقطات VNDK التي يتم تثبيتها من ملف VNDK المُنشأ مسبقًا
أدلة لقطة (على سبيل المثال، /prebuilts/vndk/v29
أو
/prebuilts/vndk/v30
) باستخدام أحد الخيارات التالية.
- الخيار 1:
BOARD_VNDK_VERSION
. يمكنك استخدام لقطات سريعة لإنشاء وحدات الموردين الحالية وتثبيت لقطات الشاشة المطلوبة لوحدات المورد. - الخيار 2:
PRODUCT_EXTRA_VNDK_VERSIONS
. ثبِّت وحدات لقطات VNDK بغض النظر عن وحدات المورّد الحالية. يؤدي هذا إلى تثبيت لقطات VNDK المنشأة مسبقًا المدرجة فيPRODUCT_EXTRA_VNDK_VERSIONS
بدون ربطها بأي حساب آخر وحدتها في وقت الإنشاء.
تعيين BOARD_VNDK_VERSION
تعرض الدالة BOARD_VNDK_VERSION
إصدار VNDK الذي يستخدمه المورّد الحالي.
مطلوبة لإنشاء وحدات. إذا كان لدى BOARD_VNDK_VERSION
نسخة لقطة VNDK المتوفرة في الدليل /prebuilts/vndk
،
تم تثبيت لقطة VNDK المُشار إليها في BOARD_VNDK_VERSION
. في حال حذف
لقطة VNDK غير متاحة في الدليل، يحدث خطأ في الإصدار.
يؤدي تحديد BOARD_VNDK_VERSION
أيضًا إلى السماح بتخزين وحدات VNDK
مثبت. ترتبط وحدات المورّدين بإصدار لقطة VNDK المحدّد في
BOARD_VNDK_VERSION
في وقت الإصدار (لا يتم إنشاء الإصدار الحالي
وحدات VNDK في مصدر النظام). عند تنزيل شجرة المصدر الكاملة من
أي مستودع، يعتمد كل من مصادر النظام والمورّدين على نظام التشغيل Android
.
تعيين PRODUCT_EXTRA_VNDK_VERSIONS
يسرد PRODUCT_EXTRA_VNDK_VERSIONS
إصدارات VNDK الإضافية التي سيتم
مثبت. عادةً ما يكفي الحصول على لقطة VNDK واحدة للحساب الحالي
قسم البائع. ومع ذلك، في بعض الحالات قد تحتاج إلى تضمين وثائق متعددة
اللقطات في صورة نظام واحدة. على سبيل المثال، لدى GSI لقطات متعددة
إتاحة استخدام العديد من إصدارات البائعين بصورة نظام واحدة. حسب الإعداد
PRODUCT_EXTRA_VNDK_VERSIONS
، يمكنك تثبيت لقطة VNDK
بالإضافة إلى إصدار VNDK في BOARD_VNDK_VERSION
.
إذا كان لدى PRODUCT_EXTRA_VNDK_VERSIONS
قائمة إصدارات معيّنة،
يبحث نظام التصميم عن لقطات معدّة مسبقًا لقائمة الإصدارات في
دليل prebuilts/vndk
. إذا حدد نظام الإصدار جميع المواقع المدرجة
تقوم بتثبيت ملفات اللقطات هذه في كل ملف من واجهات VNDK (APEX)
(out/target/product/$(TARGET_DEVICE)/system_ext/apex/com.android.vndk.vVER
.
وتؤدي الإصدارات المفقودة إلى حدوث خطأ في الإصدار.
لا ترتبط وحدات VNDK بوحدات المورِّد في وقت الإصدار، ولكن يمكن
استخدامه في وقت التشغيل إذا كانت وحدات المورد في قسم البائع تتطلب إحدى
إصدارات VNDK المثبتة. PRODUCT_EXTRA_VNDK_VERSIONS
صالح
فقط في حال تحديد BOARD_VNDK_VERSION
.
إصدار PLATFORM_VNDK_VERSION
يحدّد PLATFORM_VNDK_VERSION
إصدار VNDK لـ VNDK الحالي.
في مصدر النظام. يتم ضبط القيمة تلقائيًا:
- قبل الإصدار، تم ضبط
PLATFORM_VNDK_VERSION
على أنّهPLATFORM_VERSION_CODENAME
- عند الإصدار، يتم نسخ
PLATFORM_SDK_VERSION
إلىPLATFORM_VNDK_VERSION
بعد طرح إصدار Android، يتم إنشاء مكتبات VNDK الحالية
تم التثبيت على VNDK APEX
(/system/apex/com.android.vndk.vVER
)، حيث
VER
هو الإصدار الذي تم تخزينه في
PLATFORM_VNDK_VERSION
عند ضبط BOARD_VNDK_VERSION
على current
،
تم تخزين PLATFORM_VNDK_VERSION
في ro.vndk.version
،
وبخلاف ذلك، سيتم تخزين BOARD_VNDK_VERSION
في
ro.vndk.version
تم ضبط PLATFORM_VNDK_VERSION
على
إصدار حزمة تطوير البرامج (SDK) عند إصدار Android قبل الإصدار، وهو يرمز إلى
يُستخدم لـ PLATFORM_VNDK_VERSION
.
ملخّص إعدادات إصدار VNDK
يلخص الجدول إعدادات إصدار VNDK.
مورّد إنشاء |
إصدار لوحة الجهاز |
إصدار حزمة تطوير البرامج (SDK) |
إصدار النظام الأساسي |
موقع الإصدار |
تثبيت الدليل |
---|---|---|---|---|---|
وحدات VNDK الحالية | current |
قبل | CODE_NAME |
CODE_NAME |
/system/apex/com.android.vndk.vCODE_NAME |
بعد | SDK_VER |
SDK_VER |
/system/apex/com.android.vndk.vSDK_VER |
||
وحدات لقطات معدّة مسبقًا | VNDK_VER للحصول على نبذة |
قبل أو بعد | CODE_NAME أو SDK_VER |
VNDK_VER |
/system_ext/apex/com.android.vndk.vVNDK_VER |
- إصدار اللوحة (
BOARD_VNDK_VERSION
). الدونغ الفيتنامي (VNDK) الإصدار الذي تتطلب وحدات البائع إنشاءه. يتم الضبط علىcurrent
إذا يمكن ربطها بوحدات النظام الحالية. - إصدار النظام الأساسي (
PLATFORM_VNDK_VERSION
). إصدار VNDK الذي تنشئه وحدات النظام الحالية. يتم إنشاؤها فقط عندماBOARD_VNDK_VERSION
يساوي الحالي. - خاصية الإصدار (
ro.vndk.version
). الموقع يحدد إصدار VNDK الذي تتطلبه البرامج الثنائية وlibs في seller.img إلى الجري. سيتم التخزين فيvendor.img
في/vendor/default.prop