تبدیل از Make به Soong

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

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

سونگ چیست؟

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

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

مقایسه Make و Soong

در اینجا مقایسه ای از Make configuration با 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 مخصوص آزمون، پیکربندی ساخت ساده را ببینید.

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

تبدیل یک فایل Android.mk به یک فایل Android.bp معمولاً با استفاده از ابزار کمکی androidmk از این گردش کار کلی پیروی می کند. به طور کلی مراحل زیر در تبدیل دنبال می شود.

  1. محیط ترمینال را راه اندازی کنید و ابزار androidmk را بسازید.

    androidmk یک ابزار خط فرمان است که فایل Android.mk را تجزیه می کند و سعی می کند یک فایل مشابه Android.bp را خروجی دهد. این می تواند اکثر فایل های Android.mk را با تغییرات دستی کم یا بدون تغییر به Android تبدیل کند.

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