قبل از انتشار اندروید 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
از این گردش کار کلی پیروی می کند. به طور کلی مراحل زیر در تبدیل دنبال می شود.
محیط ترمینال را راه اندازی کنید و ابزار
androidmk
را بسازید.androidmk
یک ابزار خط فرمان است که فایلAndroid.mk
را تجزیه می کند و سعی می کند یک فایل مشابهAndroid.bp
را خروجی دهد. این می تواند اکثر فایل هایAndroid.mk
را با تغییرات دستی کم یا بدون تغییر بهAndroid
تبدیل کند.cd <root-of-the-tree> source build/envsetup.sh lunch <lunch-target> m androidmk
ساخت با
Android.mk
:sh m <module-name>
ابزار تبدیل
androidmk
را اجرا کنید:sh androidmk <path-to-Android.mk>/Android.mk > <path-to-Android.bp>/Android.bp
فایل
Android.bp
را به صورت دستی ویرایش کنید:- به هر گونه هشدار صادر شده توسط ابزار
androidmk
رسیدگی کنید. - هدر حق چاپ را حفظ یا اضافه کنید. اگر یک مورد جدید اضافه می کنید، از سال جاری استفاده کنید.
- به هر گونه هشدار صادر شده توسط ابزار
فایل
Android.mk
را حذف کنید و با فایلAndroid.bp
بسازید.با مقایسه مصنوعات ساخته شده یا واحدهای در حال اجرا و تست های عملکردی، تبدیل را تأیید کنید.
تغییرات را ذخیره و برای بررسی آپلود کنید.
برای اطلاعات بیشتر به فرمت فایل Android.bp مراجعه کنید.