قبل از انتشار اندروید ۷.۰، اندروید منحصراً از 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 پیروی میکند. به طور کلی مراحل زیر در تبدیل دنبال میشوند.
محیط ترمینال را تنظیم کنید و ابزار
androidmkرا بسازید.androidmkیک ابزار خط فرمان است که فایلAndroid.mkرا تجزیه میکند و سعی میکند یک فایلAndroid.bpمشابه را در خروجی ارائه دهد. این ابزار میتواند اکثر فایلهایAndroid.mkرا با تغییرات دستی کم یا بدون هیچ تغییری بهAndroid.bp تبدیل کند.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 مراجعه کنید.