توضّح هذه الصفحة طريقة إنشاء تمثيلات لواجهة التطبيق الثنائية (ABI) بنواة Android وتشغيلها. مراقبة واجهة التطبيق الثنائية (ABI) ينطبق هذا على Android 14 أعلى. وبالنسبة إلى الإصدارات الأقدم، راجع إصدارات النواة القديمة:
يمكنك أيضًا الاطّلاع على المستندات المرجعية لشركة Kleaf: دعم مراقبة واجهة التطبيق الثنائية (ABI) (GKI) أو دعم مراقبة واجهة التطبيق الثنائية (ABI) (الجهاز):
إنشاء النواة وتمثيل واجهة التطبيق الثنائية (ABI)
بعد تنزيل مصادر GKI شغِّل الأمر التالي لإنشاء نواة GKI وعناصر واجهة ABI:
tools/bazel run //common:kernel_aarch64_abi_dist
ينشئ هذا الأمر تمثيلاً حاليًا لواجهة التطبيق الثنائية (ABI) وينسخه إليه.
out_abi/kernel_aarch64/dist/abi.stg
بالإضافة إلى النواة والوحدات المدمجة
يمكنك تحديد وسيطات إضافية لأداة ABI في نهاية الأمر.
بعد --
. على سبيل المثال، لتغيير وجهة واجهة التطبيق الثنائية (ABI) وإنشاء العناصر،
استخدام الخيار --dist_dir
:
tools/bazel run //common:kernel_aarch64_abi_dist -- --dist_dir=out/dist
تحليل الاختلافات في واجهة التطبيق الثنائية (ABI) بين الإصدار والتمثيل المرجعي
هدف //common:kernel_aarch64_abi_dist
، الذي تم تنفيذه في الأمر أعلاه،
تحليل أي اختلافات في واجهة التطبيق الثنائية (ABI) التي يتم رصدها بين الإصدار والمرجع
التمثيل الموجود في common/android/abi_gki_aarch64.stg
(محدد في
BUILD.bazel
).
وتتم طباعة هذه الاختلافات في نهاية الإصدار، كما هو موضح في
المثال التالي:
INFO: From [stg] Comparing Kernel ABI @//common:kernel_aarch64_abi_diff:
INFO: ABI DIFFERENCES HAVE BEEN DETECTED!
يأتي التقرير المطبوع من عنصر الإصدار الموجود على
out_abi/kernel_aarch64/dist/abi_stgdiff/abi.report.short
مع التقارير في
بتنسيقات أخرى.
يجب أن تستخدم الأتمتة رمز الخروج لأمر الإنشاء، والذي يكون بقيمة غير صفرية إذا هناك اختلافات.
لاحظ أن
مرحلة التطوير
ولا تتضمن فروعها، بما في ذلك android-mainline
، تمثيلاً مرجعيًا لواجهة التطبيق الثنائية (ABI).
بدونها، لن يكتشف "//common:kernel_aarch64_abi_dist
" أي اختلافات.
تعديل تمثيل ABI المرجعي
يشير أي تغيير يؤثر في واجهة التطبيق الثنائية (ABI) إلى
تحديث قائمة الرموز،
في تمثيل واجهة التطبيق الثنائية (ABI) المرجعي
(common/android/abi_gki_aarch64.stg
، محددة في
BUILD.bazel).
لإجراء ذلك، تحتاج إلى تشغيل الأمر التالي:
tools/bazel run //common:kernel_aarch64_abi_update
ينفِّذ هذا الأمر كل العمليات الواردة في الخطوة
تحليل الاختلافات في واجهة التطبيق الثنائية (ABI) وتعديل واجهة التطبيق أيضًا
تمثيلاً مرجعيًا في المصادر. بعد ذلك، يمكن تحميل واجهة التطبيق الثنائية (ABI) المُعدَّلة في
الالتزام بنفس الالتزام بالتغيير. أدرِج الاختلافات في واجهة التطبيق الثنائية (ABI) عن
تقرير في "$DIST_DIR/abi.report.short
" في رسالة التنفيذ.
مراقبة واجهات التطبيق الثنائية (ABI) وأهداف الأجهزة
لا تحتاج مراقبة واجهة التطبيق الثنائية (ABI) إلا إلى ضبط أهداف إصدار النواة الأساسية. مختلط
إنشاء تكوينات (تلك التي تعرِّف base_kernel
) التي يتم تجميعها مباشرةً مع
نواة GKI لا تحتاج سوى لإتاحة تتبُّع رمز الجهاز
قائمة.
يجب تعديل تعريف واجهة التطبيق الثنائية (ABI) باستخدام إصدار GKI.
يمكنك أيضًا الاطّلاع على المستندات المرجعية لشركة Kleaf: دعم مراقبة واجهة التطبيق الثنائية (ABI) (الجهاز):
إصدارات نواة قديمة
Android 13
إرشادات التصميم هي في الغالب نفس
Android 14 باستثناء أنّ تنسيق ABI هو XML
تمثيل ABI المرجعي هو common/android/abi_gki_aarch64.xml
.
الإصدار 13 من نظام التشغيل Android والإصدارات الأقدم
كما في Android 13، تنسيق ABI هو XML.
تستخدم الحبوب القديمة build.sh
بدلاً من Kleaf. لمراقبة واجهة التطبيق الثنائية (ABI)، يجب استخدام
build_abi.sh
، الذي يقبل متغيرات البيئة نفسها لتخصيص
الإصدار باسم build.sh
. مثلاً:
BUILD_CONFIG=common/build.config.gki.aarch64 build/build_abi.sh
يؤدي ذلك إلى إنشاء النواة واستخراج تمثيل ABI في OUT_DIR
.
(وهو out_abi
بشكل افتراضي) ويعادل
//common:kernel_aarch64_abi_dist
هدف Kleaf (انظر
إنشاء عناصر النواة وواجهة ABI)
يتم تخزين تمثيل ABI المرجعي في android/abi_gki_aarch64.xml
باسم
المحدد بواسطة المتغير ABI_DEFINITION
في common/build.config.gki.aarch64
.
إذا كنت بحاجة إلى تحديث تمثيل واجهة التطبيق الثنائية (ABI) النواة، فإن الطريقة الأسهل هي
لاستخدام الخيارَين --update
و--print-report
:
BUILD_CONFIG=common/build.config.gki.aarch64 build/build_abi.sh --update --print-report
تطبع --print-report
اختلافات ABI بين الملف كما هي.
وواجهة تطبيق ثنائية (ABI) تم إنشاؤها حديثًا.
يؤدي الخيار --update
إلى استبدال تمثيل ABI المرجعي. كما يفعل أيضًا
الـ
تعديل قائمة الرموز
عند استخدام BUILD_CONFIG
لجهاز تم إعداد KMI_SYMBOL_LIST
له.