Google သည် Android အတွက် Modular တပ်ဆင်မှုစနစ် Soong ကို တီထွင်နေသည်။

Google သည် တည်ဆောက်မှုစနစ်တစ်ခုကို ဖန်တီးနေသည်။ Soongmake utility ကို အသုံးပြုမှုအပေါ် အခြေခံ၍ Android ပလပ်ဖောင်းအတွက် တည်ဆောက်မှု script အဟောင်းများကို အစားထိုးရန် ဒီဇိုင်းထုတ်ထားသည်။ Soong သည် ရိုးရှင်းသော ကြေငြာချက်ကို အသုံးပြုရန် အကြံပြုထားသည်။ ဖော်ပြချက် modules များ တပ်ဆင်ခြင်းဆိုင်ရာ စည်းမျဉ်းများ၊ ပေးသည် တိုးချဲ့မှု “.bp” (အကြမ်းဖျင်းများ) ပါရှိသော ဖိုင်များတွင်။ ဖိုင်ဖော်မတ်သည် JSON နှင့် နီးစပ်ပြီး ဖြစ်နိုင်ပါက၊ စုစည်းမှုဖိုင်များ၏ syntax နှင့် semantics ကို ထပ်လုပ်သည်။ ဇန်နဝါရီလ. ကုဒ်ကို Go တွင်ရေးထားပြီး Apache 2.0 လိုင်စင်အောက်တွင် ဖြန့်ဝေထားသည်။

Soong build files သည် conditional statements များနှင့် branching expression များကို မပံ့ပိုးပါ၊ သို့သော် တည်ဆောက်ရာတွင် အသုံးပြုသော ပရောဂျက်တည်ဆောက်ပုံ၊ မော်ဂျူးများနှင့် မှီခိုမှုများကိုသာ ဖော်ပြပါ။ တည်ဆောက်မည့် ဖိုင်များကို မျက်နှာဖုံးများကို အသုံးပြု၍ ဖော်ပြထားပြီး တစ်ခုချင်းစီသည် ဆက်စပ်မှီခိုမှုရှိသော ဖိုင်များစုစည်းမှုဖြစ်သည့် ပက်ကေ့ဂျ်များအဖြစ် အုပ်စုဖွဲ့ထားသည်။ ကိန်းရှင်များကို သတ်မှတ်ရန် ဖြစ်နိုင်သည်။ ကိန်းရှင်များနှင့် ဂုဏ်သတ္တိများကို တင်းတင်းကျပ်ကျပ် ရိုက်ထည့်သည် (variable အမျိုးအစားများကို ပထမတာဝန်ပေးမှုတွင် ဒိုင်နမစ်ဖြင့် ရွေးချယ်ထားပြီး မော်ဂျူးအမျိုးအစားပေါ် မူတည်၍ ဂုဏ်သတ္တိများအတွက်)။ ရှုပ်ထွေးသော စည်းလုံးခြင်းဆိုင်ရာ ယုတ္တိဗေဒဆိုင်ရာ အစိတ်အပိုင်းများကို ကိုင်တွယ်သူထံ ရွှေ့ပြီး၊ ရေးသားခဲ့သည်။ Go ဘာသာစကားဖြင့်

Soong သည် ပိုကြီးသော ပရောဂျက်တစ်ခုနှင့် ရောယှက်နေသည်။ အသေးစိတ်ပုံစံAndroid နှင့် ချိတ်ဆက်မထားသော meta-assembly system ကို တီထွင်နေပြီး၊ declarative module ဖော်ပြချက်များပါရှိသော ဖိုင်များကို အခြေခံ၍ စည်းဝေးပွဲ scripts များကို ထုတ်ပေးသည် Ninja (ပြုလုပ်ရန်အတွက် အစားထိုးခြင်း)၊ တည်ဆောက်ရန်အတွက် လုပ်ဆောင်ရန် လိုအပ်သည့် command များနှင့် မှီခိုမှုများကို ဖော်ပြခြင်း။ ရှုပ်ထွေးသောစည်းမျဉ်းများ သို့မဟုတ် တည်ဆောက်မှုယုတ္တိကိုသတ်မှတ်ရန် ဒိုမိန်း-သီးသန့်ဘာသာစကားကို အသုံးပြုမည့်အစား Blueprint သည် Go ဘာသာစကားတွင် ပရောဂျက်-သီးသန့်ကိုင်တွယ်သူများကို အသုံးပြုသည် (Soong သည် Android အတွက် မရှိမဖြစ်လိုအပ်သော အလားတူကိုင်တွယ်သူအစုအဝေးတစ်ခုဖြစ်သည်)။

ဤချဉ်းကပ်နည်းသည် Android ကဲ့သို့ ကြီးမားပြီး ကွဲပြားသော ပရောဂျက်များကို အဆင့်မြင့်ပရိုဂရမ်းမင်းဘာသာစကားဖြင့် ကုဒ်တွင် စုစည်းမှုယုတ္တိ၏ ရှုပ်ထွေးသောဒြပ်စင်များကို အကောင်အထည်ဖော်နိုင်စေကာ၊ ရိုးရှင်းသောကြေညာစာတမ်းဆိုင်ရာ အထားအသိုများကို အသုံးပြု၍ စည်းဝေးပွဲအဖွဲ့အစည်းနှင့် ပရောဂျက်ဖွဲ့စည်းပုံဆိုင်ရာ မော်ဂျူးများအတွက် အပြောင်းအလဲများပြုလုပ်နိုင်မှုကို ထိန်းသိမ်းထားနိုင်စေပါသည်။ . ဥပမာအားဖြင့်၊ Soong တွင်၊ compiler အလံများရွေးချယ်ခြင်းကို handler မှလုပ်ဆောင်သည်။ llvm.goနှင့် ဟာ့ဒ်ဝဲဗိသုကာများဆိုင်ရာ ဆက်တင်များကို ကိုင်တွယ်သူမှ လုပ်ဆောင်သည်။ art.goသို့သော် ကုဒ်ဖြင့် ဖိုင်များ ချိတ်ဆက်ခြင်းကို “.bp” ဖိုင်တွင် လုပ်ဆောင်သည်။

cc_library {
...
srcs: ["generic.cpp"]၊
ခုံး- {
လက်မောင်း- {
srcs: ["arm.cpp"]၊
},
x86: {
srcs: ["x86.cpp"]၊
},
},
}

source: opennet.ru

မှတ်ချက် Add