Kuinka korjata pysyvästi ”SDK-rakennustyökalut on liian matala projektille” -virhe React Native for Android -sovelluksessa

Tai: kuinka et saa reagointikykyistä Android-projektiasi täysin sekaisin joka kerta, kun lisäät riippuvuuden lanka

Yksi häiritsevimmistä asioista, joita voi tapahtua React Native -sovelluksen kehittämisen aikana, on pelätty Projektin: sovellusvirheen määrittämisessä tapahtui ongelma, jota seurasi heti tarkempi SDK Build Tools -versio (xx.xx) on liian pieni projektille ': reagoi-natiivi-riippuvuutesi' -viesti.

Tämä voi tapahtua monissa eri tilanteissa:

  • Suorit reagoi-natiivi run-android -sovelluksen päivitettyäsi tietyn natiivi-riippuvuuden;
  • Käytit samaa komentoa suoritettuaan yksinkertaisesti langan, joka poistaa sisäisesti kaikki manuaaliset päivitykset, jotka olet tehnyt node_modules-kansion tiedostoille (sen lisäksi, että päivität tosiasiallisesti kaikki dep-tiedostot);
  • Yritit linkittää natiivia moduulia ilman tuloksia (joko reagoida-natiivi linkittää-reagoi-natiivi-riippuvuutesi tai manuaalisesti);

Luultavasti tiedät jo, kuinka korjaat tämän manuaalisesti, mutta todennäköisesti etsit tapaa automatisoida se, ettei tuhlata arvokkaita minuutteja päivittäin.

No, tämän artikkelin jälkeen tiedät kuinka käsitellä sitä hyväksi.

Yksi häiritsevimmistä asioista, joita voi tapahtua React Native -sovelluksen kehittämisen aikana, on pelätty Projektin: sovellusvirheen konfiguroinnissa tapahtui ongelma, jota seurasi heti tarkempi SDK Build Tools -versio (xx.xx) on liian pieni projektille ': reagoi-natiivi-riippuvuutesi' -viesti.

Manuaalinen ratkaisu

Rehellisesti sanottuna, en aio tuhlata aikaa etsiessään manuaalista ratkaisua, koska verkossa on monia muita opetusohjelmia, jotka tekevät sen melko hyvin (esimerkki), mutta ne kaikki - ainakin kaikki, jotka olen onnistunut löytämään - tarjoa vain väliaikainen ratkaisu, joka sinun on toistettava joka kerta, kun suoritat jonkin edellä mainituista vaiheista, tai mikä vielä pahempaa, ehdottaa, että siirryt vanhempaan (ja hitaaseen) versoon rypäleestä, kuinka hyödyllinen se voi olla?

Joten tutkitaan todellista ratkaisua.

Automaattinen ratkaisu

Mikä on parempi kuin yksinkertainen komentosarja, joka muuttaa kaikkia compileSdkVersion- ja buildToolsVersion-merkintöjä projektimme jokaisen react-nativein Android-riippuvuuteen? Voisimme kirjoittaa sen JavaScriptinä ja kytkeä sen sitten paketti.json-ohjelman skriptiosaan ja vedota sen sitten npm run tai langan suorituksesta.

No… Vaikka se voisi varmasti olla valtava edistysaskel, meidän on silti jäsentättävä arkotiedostot ja muokattava niitä tekemättä niiden sintaksia kelvottomaksi. Ei, meidän pitäisi hyödyntää Gradle build -työkalun skriptikielet suoraan, jotta ongelma voidaan ratkaista oikein ja puhtaalla tavalla.

Gradlen Project API -sovelluksessa on menetelmä, jota kutsutaan afterEvaluateksi ja jonka kuvaus on seuraava:

mitätön jälkiarvioinnin jälkeen (sulkeminen sulkeminen)
Lisää sulkemisen, jota kutsutaan heti, kun projekti on arvioitu. Projekti siirretään parametrina sulkemiseen. Tällaiselle kuuntelijalle ilmoitetaan, kun tähän projektiin kuuluva rakennustiedosto on suoritettu. Vanhempi projekti voi esimerkiksi lisätä tällaisen kuuntelijan lapsiprojektiinsa. Tällainen kuuntelija voi edelleen määrittää lapsiprojektit lapsiprojektien tilan perusteella sen jälkeen kun niiden rakennustiedostot on suoritettu.

Periaatteessa voidaan ajatella sitä Reaktin komponenttiDidMount steroideissa.

Oikea paikka kutsua tätä menetelmää on yourReactNativeProject / android / build.gradle-tiedostossa, alaprojektit {} -osiossa.

Build.gradle-tiedostosi pitäisi näyttää seuraavalta:

Nyt lisätään alaprojektit {} -osa ja vedotaan skriptiin:

Mitä me vain kirjoitimme? Perustimme Gradlelle tehtäväksi korvata jokaisen dep.sign.gradle-tiedoston android-ominaisuuden kaksi erityistä merkintää: 'compileSdkVersion' ja 'buildToolsVersion'.

(Tiedän, että kaikilla näillä tiedostoilla on sama nimi ja laajennus, se voi olla melko hämmentävää aloittelijoille).

Sinun pitäisi saada seuraava tulos (enemmän tai vähemmän) jokaisesta React Native Android -projektin alkuperäisestä riippuvuudesta.

Se on se, yksinkertainen kuin piirakka. Rakastan henkilökohtaisesti, kun tylsiä ongelmaa voidaan korjata kouralliselle riville koodia.

Saatat myös olla kiinnostunut: React Native XCode Beta 8.0: ssa: kuinka korjata alkuperäinen rakennusvirhe.

Jotkut avoimen lähdekoodin kirjastoista haluaisin kuulla palautetta seuraavista aiheista:

  • https://github.com/jkomyno/react-native-animated-hide-view
  • https://github.com/jkomyno/react-native-animated-checkbox
  • https://github.com/jkomyno/react-native-universal-picker

Jos pidit tästä opetusohjelmasta ja haluat jatkaa oppimista React Native -vinkistä, napsauta alla olevaa Seuraa-painiketta ja seuraa minua Githubissa osoitteessa @jkomyno