گوگل سیستم مونتاژ ماژولار Soong را برای اندروید توسعه می دهد

گوگل در حال توسعه یک سیستم ساخت است سونگ، طراحی شده برای جایگزینی اسکریپت های ساخت قدیمی برای پلتفرم اندروید، بر اساس استفاده از ابزار make. Soong پیشنهاد می کند از اعلان ساده استفاده کنید توضیحات قوانین مونتاژ ماژول ها، داده شده در فایل هایی با پسوند ".bp" (طرح های نقشه). فرمت فایل نزدیک به JSON است و در صورت امکان، سینتکس و معنای فایل های اسمبلی را تکرار می کند. Bazel. کد در Go نوشته شده و تحت مجوز Apache 2.0 توزیع شده است.

فایل‌های ساخت Soong از عبارات شرطی و عبارات انشعاب پشتیبانی نمی‌کنند، بلکه فقط ساختار پروژه، ماژول‌ها و وابستگی‌های مورد استفاده در هنگام ساخت را توصیف می‌کنند. فایل هایی که قرار است ساخته شوند با استفاده از ماسک ها توصیف شده و در بسته هایی گروه بندی می شوند که هر کدام مجموعه ای از فایل ها با وابستگی های مرتبط هستند. امکان تعریف متغیرها وجود دارد. متغیرها و خصوصیات به طور دقیق تایپ می شوند (نوع متغیرها در اولین انتساب به صورت پویا و بسته به نوع ماژول برای ویژگی ها به صورت ایستا انتخاب می شود). عناصر پیچیده منطق اسمبلی به هندلرها منتقل می شوند، نوشته شده است به زبان Go

Soong با یک پروژه بزرگتر در هم تنیده است چاپ اوزالید که برای کپیه نقشه و رسم های فنی بکار میرود، که در آن یک سیستم متا اسمبلی غیر مرتبط با اندروید در حال توسعه است، که بر اساس فایل هایی با توضیحات ماژول اعلامی، اسکریپت های اسمبلی تولید می کند. نینجا (جایگزینی برای make)، دستوراتی را که برای ساختن باید اجرا شوند و وابستگی ها را توصیف می کند. به جای استفاده از قوانین پیچیده یا یک زبان خاص دامنه برای تعریف منطق ساخت، Blueprint از کنترل کننده های پروژه خاص در زبان Go استفاده می کند (Soong اساسا مجموعه ای از کنترل کننده های مشابه برای اندروید است).

این رویکرد به پروژه‌های بزرگ و ناهمگن مانند اندروید اجازه می‌دهد تا عناصر پیچیده منطق اسمبلی را در کد در یک زبان برنامه‌نویسی سطح بالا پیاده‌سازی کنند، در حالی که توانایی ایجاد تغییرات در ماژول‌های مربوط به سازمان اسمبلی و ساختار پروژه را با استفاده از نحو ساده اعلامی حفظ می‌کند. . برای مثال در Soong انتخاب پرچم های کامپایلر توسط handler انجام می شود llvm.go، و اعمال تنظیمات خاص برای معماری سخت افزاری توسط کنترل کننده انجام می شود art.go، اما پیوند فایل های کد در فایل ".bp" انجام می شود.

cc_library {
...
srcs: ["generic.cpp"]،
قوس: {
بازو: {
srcs: ["arm.cpp"]،
},
x86:{
srcs: ["x86.cpp"]،
},
},
}

منبع: opennet.ru

اضافه کردن نظر