تبدیل از Make به Soong

قبل از انتشار اندروید ۷.۰، اندروید منحصراً از GNU Make برای توصیف و اجرای قوانین ساخت خود استفاده می‌کرد. سیستم ساخت Make به طور گسترده پشتیبانی و استفاده می‌شود، اما در مقیاس اندروید کند، مستعد خطا، مقیاس‌ناپذیر و آزمایش آن دشوار شد. سیستم ساخت Soong انعطاف‌پذیری مورد نیاز برای ساخت‌های اندروید را فراهم می‌کند. ما در حال ایجاد تغییرات قابل توجهی در سیستم ساخت اندروید هستیم، سیستم ساخت Make ( Android.mk ) را منسوخ کرده و آن را با Soong ( Android.bp ) جایگزین می‌کنیم.

به همین دلیل، انتظار می‌رود توسعه‌دهندگان پلتفرم در اسرع وقت از Make به Soong مهاجرت کنند. برای دریافت پشتیبانی، سوالات خود را به گروه Android Building Google ارسال کنید.

سونگ چیست؟

سیستم ساخت Soong در اندروید ۷.۰ (نوقا) برای جایگزینی Make معرفی شد. این سیستم از ابزار شبیه‌سازی Kati GNU Make و کامپوننت سیستم ساخت Ninja برای سرعت بخشیدن به ساخت‌های اندروید استفاده می‌کند.

برای دستورالعمل‌های کلی، به توضیحات سیستم ساخت اندروید (Android Make Build System ) در پروژه متن‌باز اندروید (AOSP) و برای کسب اطلاعات در مورد اصلاحات مورد نیاز برای سازگاری از Make به Soong، به تغییرات سیستم ساخت برای نویسندگان Android.mk مراجعه کنید. برای تعاریف اصطلاحات کلیدی، به مدخل‌های مربوط به ساخت در واژه‌نامه و برای جزئیات کامل به مرجع ماژول‌های Soong مراجعه کنید.

مقایسه ساخت و سونگ

در اینجا مقایسه‌ای بین پیکربندی Make و Soong که همین کار را در یک فایل پیکربندی Soong (Blueprint یا .bp ) انجام می‌دهد، آورده شده است.

مثال بزنید

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)

مثال سونگ

cc_library_shared {
     name: "libxmlrpc++",

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

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

برای مثال‌های پیکربندی Soong مخصوص تست، به Simple build configuration مراجعه کنید.

روش تبدیل اولیه

تبدیل یک فایل 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 مراجعه کنید.