Mobile application development

DONE.

Mobilalkalmazások két platformon

Techtalk
2021.04.22. clock 9 perc

Ez a bejegyzés bevezetést nyújt a keresztplatformos mobilalkalmazások fejlesztési környezetébe, két széles körben elterjedt, webtechnológiákra épülő keretrendszer könnyen érthető leírásával: React Native és Apache Cordova. Más teljesen érvényes és népszerű választási lehetőségek, mint az Ionic, a Flutter vagy a Felgo, ebben a bejegyzésben nem kerülnek bemutatásra.

Kezdjük az elején: miért is fontosak a mobilalkalmazások? A Finances Online szerint a globális fogyasztói költés mobilalkalmazásokra tavaly meghaladta a 100 milliárd dollárt, és a statista.com előrejelzése szerint az okostelefon-felhasználók száma 2021-re 3,8 milliárdra nő. Ezért érdemes lehet, hogy a gondosan megtervezett logónk mindig ott legyen ezeken az eszközökön. Ezt elérhetjük progresszív webalkalmazások (PWA) használatával is, de véleményünk szerint a PWAs inkább a technikai körökben népszerűbbek, mint a kevésbé technikai felhasználók körében, legalábbis egyelőre, Közép-Európában.

Tehát elismertük, hogy a mobilalkalmazások érdemesek a figyelemre, és nagyon szeretnénk, ha a logónk milliók okostelefonján ott lenne, de itt jön az érdekes rész: valóban szükséges két külön alkalmazást fejleszteni (és fizetni érte) Android és iOS eszközökre? A válasz: attól függ. Mindig az alkalmazás és a kiszolgálni kívánt esetek függvénye, azonban a keresztplatformos mobilalkalmazás-keretrendszerek nagyszerű módjai lehetnek a fejlesztési költségek és komplexitás csökkentésének, és előfordulhat, hogy a teljes kódalap újrahasznosítható mindkét platformon.

A keresztplatformos mobilalkalmazás-keretrendszerek lehetővé teszik a fejlesztők számára, hogy natív vagy hibrid mobilalkalmazásokat írjanak, amelyek mind Androidon, mind iOS-en futnak, többnyire közös kódalapot használva. Ez alapvetően azt jelenti, hogy az Apple App Store-ból és a Google Play Store-ból letöltött alkalmazás nagyrészt ugyanazt a kódot tartalmazza. Ennek érdekében sok ilyen keretrendszer webtechnológiákat, például JavaScriptet vagy HTML-t használ az alkalmazás logikájának és a felhasználói felületnek a biztosítására, míg a natív funkciók eléréséhez platformspecifikus natív könyvtárakhoz való kötéseket használ, amelyeket maga a keretrendszer valósít meg. Magasabb szinten ez azt jelenti, hogy az alkalmazást többnyire JavaScriptben írják, nem pedig Kotlinban vagy Swiftben, ami számos előnnyel és hátránnyal jár.

ELŐNYÖK:

  • Az alkalmazás kódja újrahasznosítható mindkét mobilplatformon.
  • Az alkalmazás logikája újrahasznosítható a webalkalmazásban (sőt, néha még a felhasználói felület részei is).
  • Az alkalmazás logikája újrahasznosítható a webalkalmazásban.
  • Az alkalmazás fejlesztése kevesebb időt vesz igénybe.
  • Az alkalmazás továbbra is natív, hozzáférhet különféle érzékelőkhöz, natív push értesítésekhez, helyadatokhoz stb.
  • Az alkalmazás könnyen karbantartható.

HÁTRÁNYOK:

  • A költségmegtakarítások kisebb, de létező teljesítményproblémákon vesznek el.
  • Előfordulhat, hogy bizonyos platformfüggő natív kódot mégiscsak meg kell írni.
  • Az alkalmazás letöltési mérete jelentősen nagyobb lesz, mint a tisztán natív alkalmazásoké.

Két kedvenc keretrendszerünk a React Native (kiterjedt használatával az Expo) és a Cordova, mivel mindkettő kiváló eszköz a megfelelő munkához, de először nézzük meg a fő különbségeket. A főbb különbségtételi szempontok a következők lesznek:

  • Fejlesztési idő: arányos a fejlesztési költséggel.
  • Natív animációk: nagy hatással van a felhasználói élményre.
  • Teljesítmény: mindenki szereti a gyors, élénk alkalmazásokat.
  • Meglévő webes komponensek újrahasznosíthatósága: hogy könnyen integrálhatók-e meglévő weboldalak komponensei.
  • Támogatás OTA frissítésekhez: Az Over-The-Air frissítések gyorsak, mert nem igényelnek új alkalmazásbuildet, amit fel kell tölteni a boltokba.
  • AR/VR támogatás: hogy az alkalmazás tartalmazhat-e Kiterjesztett vagy Virtuális Valóság funkciókat.
  • Háttérkódfuttatás: például médialejátszás az alkalmazás háttérben futása közben.
  • Licenc: hogy a keretrendszer nyílt forráskódú és ingyenesen használható-e.

Az érzékelőkhöz való hozzáférés (mint például a kamera vagy a gyorsulásmérő) és a push értesítések támogatása nem szerepel a listában, mivel ezeket minden keretrendszer támogatja. Nézzük meg, hogyan viszonyul a React Native és a Cordova a natív alkalmazásokhoz ezen tulajdonságok tekintetében.

Tulajdonság / keretrendszer React Native Apache Cordova Native
Fejlesztési idő alacsony alacsony magas
Valóban natív UI és animációk igen nem igen
Teljesítmény  magastól közepesig küzepestől alacsonyig magas, de ez az alapunk
Web UI újrahasználható (CSS használatával) nem igen nem
OTA frissítések igen igen nem
AR / VR igen limitált igen
háttérkód futtatása limitált limitált teljes támogatás
Licenc* MIT Apache 2.0 platform határozza meg

 

 

 

 

 

 

 

*A megadott keretrendszer licencé, nem az alkalmazásé

Bár a fenti táblázat messze nem technikai, világosan látszik, hogy a React Native teljesítmény és „natívság” szempontjából kiemelkedik, míg a Cordova remek lehet, ha egy meglévő webalkalmazást kell mobilalkalmazás formátumba ágyazni, de nézzük meg egy kicsit mélyebben a különbségeket.

Mind a React Native, mind a Cordova jelentősen alacsony fejlesztési időt kínál a platformspecifikus natív alkalmazásfejlesztéshez képest. A React Native a „Learn once, write anywhere” filozófiát követi, ami azt jelenti, hogy ugyanazok a fejlesztési koncepciók alkalmazhatók az Android és iOS alkalmazások írására (bár a legtöbb esetben a kód újrahasznosítható). A Cordova esetében a felhasználói felületet egy minimális webböngésző rendereli, így a felhasználói felület minden platform esetében pontosan ugyanúgy fog kinézni. A natív alkalmazások esetében azonban külön fejlesztőknek kell külön kódot írniuk minden célzott platformra, ami növeli a költségeket.

Az alkalmazások ugyanazon Android emulátoron, ugyanazon PC-n futnak. Az emulátoron való futás rendkívül negatív hatással van a teljesítményre. A felvételeket minden alkalmazás 3 bemelegítő futása után készítették.

Talán a Cordova legfőbb előnye a többi választással szemben az, hogy a stílusokat CSS használatával lehet kialakítani, ami azt jelenti, hogy bármely meglévő reszponzív webes felhasználói felület újrahasznosítható jelentős módosítások nélkül. Képzeld el úgy, mintha megragadnád a webalkalmazásodat, és egy mobilalkalmazás héjába helyeznéd, natív funkciókkal kiegészítve. Megjegyzendő, hogy az összes tárgyalt platform támogatja a WebView-kat, így egyszerű HTML felhasználói felületek, mint például a feltételek és feltételek oldalak, minden esetben újrahasznosíthatók. Bár a CSS használata a stílus kialakításához előnyös lehet, jelentős teljesítményhatással bír, amikor az eszköz tájolása megváltozik, mivel a keretrendszernek újra kell számítania az összes dinamikus dimenziót és pozíciót.

Az OTA frissítések lehetővé teszik a felhasználók számára a frissítések fogadását anélkül, hogy azokat a megfelelő áruházakból kellene telepíteniük. A React Native és a Cordova esetében az alkalmazás JS-ben van írva, ami azt jelenti, hogy egy kezdeti build után az alkalmazást nem kell újrafordítani (ha az alkalmazás nincs natív függőségekkel kiegészítve). Ez lehetővé teszi a fejlesztők számára, hogy futás közben cseréljék az alkalmazás logikáját, így megvalósítva az OTA frissítéseket. A natív alkalmazások esetében ez nem lehetséges, legalábbis nem alapértelmezés szerint.

Nyilvánvaló, hogy a natív alkalmazások teljes körű támogatást nyújtanak az AR és VR funkciókhoz a Google ARCore és az Apple ARKit révén. A Cordova alapvető felépítése és elvei miatt nem képes erre, de mivel a React Native valójában natív nézeteket használ, számos nyílt forráskódú könyvtár jelenhet meg, amelyek segíthetnek keresztplatformos AR/VR alkalmazások építésében. Lásd itt működés közben. Fontos megjegyezni, hogy az AR és VR csak a megfelelő hardverkonfigurációval rendelkező eszközök által támogatott, és ez minden esetben érvényes.

Sajnos a háttérkód futtatásának alapértelmezett támogatása jelentősen korlátozott a keresztplatformos alkalmazások esetében, mivel egy JS értelmező háttérben való elindítása rendkívül nagy teljesítménybeli terhelést és hatást gyakorol az akkumulátor élettartamára. Ez nem jelenti azt, hogy egyáltalán nem lehet háttérfeladatokat futtatni. A React Native és a Cordova is biztosít API-kat az operációs rendszer által időzített JS feladatok futtatására, de számos hátrány van a natív alkalmazásokhoz képest.

Bár a greenfield alkalmazásokhoz használt keretrendszerünk a React Native, a végső választás mindig az ügyfeleinkkel együtt meghatározott tényleges követelményektől függ. Egy átlagos alkalmazás esetében hasonló teljesítmény és funkciókészlet érhető el és építhető meg bármelyik említett keretrendszerrel.

Remélem, hogy ez a bejegyzés gyakorlati bevezetőt adott a keresztplatformos mobilalkalmazások világába. Ha még mindig vannak kérdéseid, vagy csak szeretnél egy jót beszélgetni ezeknek a keretrendszereknek a technikai részleteiről, ugorjunk be egy kávéra, az ajtó mindig nyitva áll a Tűzoltó 66-ban (bejárat a Lenhossék utcából).

További blogbejegyzések

Sikeres weboldal készítése
Techtalk

A sikeres weboldal 5 jellemzője

2023.07.22.
4 perc

A foci, a vírusok és az energiapolitika mellett a weboldalakat sikeressé tevő jellemzők és alapelvek azok, amikhez mindenki ért, de valójában alig rendelkezik valaki megbízható tudással ezekben a témákban. Nem[...]

Weboldal tervezés
Techtalk

Az eredményes weboldal 5 alapvető szempontja 2022-ben

2023.02.16.
4 perc

Van valami, amit mindenki jobban tud másoknál, mégis senki sincs igazán biztos benne. Azokról a jellemzőkről és elvekről beszélünk, amelyek segítenek egy hétköznapi weboldalt abszolút sikerre vinni 2022-ben. Ez a[...]

Kubernetes
Techtalk

A legjobb házigazda – Melyik tárhely megoldás a legmegfelelőbb számodra?

2022.05.13.
9 perc

When it comes to hosting, such a thing as ‘best practice’ simply does not exist. However, as diverse this area of expertise has become […]