Google kehittää Soongin modulaarisen kokoonpanojärjestelmän Androidille

Google kehittää rakennusjärjestelmää Soong, joka on suunniteltu korvaamaan Android-alustan vanhat koontiskriptit, jotka perustuvat make-apuohjelman käyttöön. Soong ehdottaa yksinkertaisen deklaratiivin käyttöä kuvaukset moduulien kokoamista koskevat säännöt, annettu tiedostoissa, joiden tunniste on ".bp" (piirustukset). Tiedostomuoto on lähellä JSONia ja toistaa kokoonpanotiedostojen syntaksin ja semantiikan, jos mahdollista Bazel. Koodi on kirjoitettu Go-kielellä ja jaettu Apache 2.0 -lisenssillä.

Soong build -tiedostot eivät tue ehdollisia lausekkeita ja haarautumislausekkeita, vaan kuvaavat vain projektin rakennetta, moduuleja ja rakentamisessa käytettyjä riippuvuuksia. Rakennettavat tiedostot kuvataan maskien avulla ja ryhmitellään paketeiksi, joista jokainen on kokoelma tiedostoja ja niihin liittyviä riippuvuuksia. On mahdollista määritellä muuttujia. Muuttujat ja ominaisuudet kirjoitetaan tiukasti (muuttujien tyyppi valitaan dynaamisesti ensimmäisen määrityksen yhteydessä ja ominaisuudet staattisesti riippuen moduulin tyypistä). Monimutkaiset kokoonpanologiikan elementit siirretään käsittelijöihin, kirjoitettu Go-kielellä.

Soong kietoutuu suurempaan projektiin Suunnitelma, jonka sisällä kehitetään Androidiin liittymätöntä metakokoonpanojärjestelmää, joka generoi kokoonpanoskriptejä deklaratiivisten moduulikuvausten sisältävien tiedostojen perusteella. Ninja (korvaa sanalle make), jossa kuvataan komennot, jotka on suoritettava rakentamiseen, ja riippuvuudet. Sen sijaan, että Blueprint käyttäisi monimutkaisia ​​sääntöjä tai verkkotunnuskohtaista kieltä määrittämään rakennuslogiikka, se käyttää projektikohtaisia ​​käsittelijöitä Go-kielellä (Soong on pohjimmiltaan joukko samanlaisia ​​käsittelijöitä Androidille).

Tämä lähestymistapa mahdollistaa suurien ja heterogeenisten projektien, kuten Androidin, toteuttaa monimutkaisia ​​kokoonpanologiikan elementtejä koodissa korkean tason ohjelmointikielellä säilyttäen samalla kyvyn tehdä muutoksia kokoonpanon organisaatioon ja projektirakenteeseen liittyviin moduuleihin käyttämällä yksinkertaista deklaratiivista syntaksia. . Esimerkiksi Soongissa kääntäjälippujen valinnan tekee käsittelijä llvm.go, ja laitteistoarkkitehtuurikohtaisten asetusten soveltamisen suorittaa käsittelijä art.go, mutta kooditiedostojen linkittäminen tapahtuu ".bp"-tiedostossa.

cc_library {
...
srcs: ["generic.cpp"],
kaari: {
käsivarsi: {
srcs: ["arm.cpp"],
},
x86: {
srcs: ["x86.cpp"],
},
},
}

Lähde: opennet.ru

Lisää kommentti