التحويل من Make إلى Soong

قبل إصدار Android 7.0، كان Android يستخدم GNU Make حصريًا لوصف قواعد التصميم وتنفيذها. يحظى نظام التصميم Make بدعم واسع النطاق ويُستخدم على نطاق واسع، ولكن على نطاق Android، أصبح بطيئًا وعرضة للأخطاء وغير قابل للتوسيع ويصعب اختباره. يوفر نظام التصميم Soong المرونة المطلوبة لتصاميم Android. نحن نجري تغييرات كبيرة على نظام تصميم Android، ونلغي نظام التصميم Make ‏ (Android.mk) ونستبدله بنظام Soong ‏ (Android.bp).

لهذا السبب، يُتوقَّع من مطوّري المنصات الانتقال من Make إلى Soong في أقرب وقت ممكن. يمكنكم إرسال الأسئلة إلى الـ Android Building Google Group لتلقّي الدعم.

ما هو Soong؟

تم تقديم نظام التصميم Soong في Android 7.0 (إصدار Nougat) ليحل محل Make. ويستفيد من أداة Kati المستنسخة من GNU Make ومكوّن نظام التصميم Ninja build system لتسريع تصاميم Android.

يُرجى الاطّلاع على وصف نظام التصميم Android Make في مشروع Android مفتوح المصدر (AOSP) للحصول على تعليمات عامة و التغييرات في نظام التصميم لمطوّري ملفات Android.mk للتعرّف على التعديلات اللازمة للانتقال من Make إلى Soong. يُرجى الاطّلاع على الإدخالات ذات الصلة بالتصميم في المسرد للاطّلاع على تعريفات المصطلحات الرئيسية، وعلى مرجع وحدات Soong للحصول على التفاصيل الكاملة.

مقارنة بين Make وSoong

في ما يلي مقارنة بين إعداد Make وإعداد Soong الذي يحقّق النتيجة نفسها في ملف إعداد Soong ‏ (Blueprint أو .bp).

مثال على Make

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := libxmlrpc++
LOCAL_MODULE_HOST_OS := linux

LOCAL_RTTI_FLAG := -frtti
LOCAL_CPPFLAGS := -Wall -Werror -fexceptions
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/src

LOCAL_SRC_FILES := $(call \
     all-cpp-files-under,src)
include $(BUILD_SHARED_LIBRARY)

مثال على Soong

cc_library_shared {
     name: "libxmlrpc++",

     rtti: true,
     cppflags: [
           "-Wall",
           "-Werror",
           "-fexceptions",
     ],
     export_include_dirs: ["src"],
     srcs: ["src/**/*.cpp"],

     target: {
           darwin: {
                enabled: false,
           },
     },
}

للاطّلاع على أمثلة على إعدادات Soong الخاصة بالاختبار، يُرجى الاطّلاع على إعداد تصميم بسيط.

إجراء التحويل الأساسي

عادةً ما يتّبع تحويل ملف Android.mk إلى ملف Android.bp سير العمل العام التالي باستخدام أداة androidmk المساعدة. بشكل عام، يتم اتّباع الخطوات التالية في عملية التحويل.

  1. إعداد بيئة المحطة الطرفية وأداة androidmk للتصميم

    androidmk هي أداة سطر أوامر تحلّل ملف Android.mk وتحاول إخراج ملف Android.bp مشابه. يمكنها تحويل معظم ملفات Android.mk إلى Android.bp مع إجراء تغييرات يدوية قليلة أو بدون إجراء أي تغييرات.

    cd <root-of-the-tree>
    source build/envsetup.sh
    lunch <lunch-target>
    m androidmk
    
  2. التصميم باستخدام Android.mk: sh m <module-name>

  3. تشغيل أداة التحويل androidmk‏: sh androidmk <path-to-Android.mk>/Android.mk > <path-to-Android.bp>/Android.bp

  4. تعديل ملف Android.bp يدويًا:

    • معالجة أي تحذيرات صادرة عن أداة androidmk
    • الاحتفاظ برأس حقوق الطبع والنشر أو إضافته في حال إضافة رأس جديد، يجب استخدام السنة الحالية.
  5. إزالة ملف Android.mk والتصميم باستخدام ملف Android.bp

  6. التحقّق من عملية التحويل من خلال مقارنة العناصر التي تم تصميمها أو تشغيل اختبارات الوحدة والاختبارات الوظيفية

  7. حفظ التغييرات وتحميلها للمراجعة

يُرجى الاطّلاع على تنسيق ملف Android.bp لمزيد من المعلومات.