Bumuo ang Google ng Soong modular assembly system para sa Android

Gumagawa ang Google ng build system Soong, na idinisenyo upang palitan ang mga lumang build script para sa Android platform, batay sa paggamit ng make utility. Iminumungkahi ni Soong ang paggamit ng simpleng deklaratibo paglalarawan mga panuntunan para sa pag-assemble ng mga module, binigay sa mga file na may extension na ".bp" (mga blueprint). Ang format ng file ay malapit sa JSON at, kung maaari, inuulit ang syntax at semantics ng mga assembly file bazel. Ang code ay nakasulat sa Go at ipinamahagi sa ilalim ng lisensya ng Apache 2.0.

Ang mga file ng Soong build ay hindi sumusuporta sa mga conditional statement at branching expression, ngunit inilalarawan lamang ang istraktura ng proyekto, mga module at dependencies na ginagamit kapag bumubuo. Ang mga file na gagawin ay inilarawan gamit ang mga maskara at pinagsama-sama sa mga pakete, na ang bawat isa ay isang koleksyon ng mga file na may nauugnay na mga dependency. Posibleng tukuyin ang mga variable. Ang mga variable at property ay mahigpit na tina-type (ang uri ng mga variable ay dynamic na pinili sa unang pagtatalaga, at para sa mga property na statically depende sa uri ng module). Ang mga kumplikadong elemento ng lohika ng pagpupulong ay inilipat sa mga humahawak, nakasulat sa wikang Go.

Nakipag-ugnay si Soong sa isang mas malaking proyekto Magplano, kung saan binubuo ang isang meta-assembly system na hindi nakatali sa Android, na, batay sa mga file na may mga declarative na paglalarawan ng module, ay bumubuo ng mga script ng assembly Ninja (isang kapalit para sa make), na naglalarawan sa mga utos na kailangang patakbuhin upang bumuo at ang mga dependency. Sa halip na gumamit ng mga kumplikadong panuntunan o wikang tukoy sa domain upang tukuyin ang lohika ng pagbuo, gumagamit ang Blueprint ng mga humahawak na partikular sa proyekto sa wikang Go (Ang Soong ay mahalagang hanay ng mga katulad na tagapangasiwa para sa Android).

Ang diskarte na ito ay nagbibigay-daan para sa malalaki at magkakaibang mga proyekto, tulad ng Android, na magpatupad ng mga kumplikadong elemento ng assembly logic sa code sa isang mataas na antas ng programming language, habang pinapanatili ang kakayahang gumawa ng mga pagbabago sa mga module na nauugnay sa organisasyon ng pagpupulong at istraktura ng proyekto gamit ang simpleng declarative syntax. . Halimbawa, sa Soong, ang pagpili ng mga flag ng compiler ay ginagawa ng handler llvm.go, at ang paglalapat ng mga setting na partikular sa mga arkitektura ng hardware ay isinasagawa ng handler art.go, ngunit ang pag-link ng mga file ng code ay isinasagawa sa ".bp" na file.

cc_library {
...
srcs: ["generic.cpp"],
arko: {
braso: {
srcs: ["arm.cpp"],
},
x86:{
srcs: ["x86.cpp"],
},
},
}

Pinagmulan: opennet.ru

Magdagdag ng komento