Nativescript nebo Android Java/Kotlin? rubrika: Programování: Android

6 pilif
položil/-a 3.8.2020

Zdravím ve spolek,
aktuálně řeším rozhodnutí o výběru technologie pro vývoj primárně na Android zařízení s teoretickou možností podpory iOS.
Požadavky jsou, aby aplikace (bude jich více v různě velkém rozsahu) uměly pracovat offline (SQLite nebo jiná DB) a dokázaly scanovat čárový kód. Jako zařízení budeme používat primárně Zebru (v některých aplikacích standardní mobil). Nepředpokládáme nějakou velkou logiku v aplikaci, složitosti by měl řešit backend přes RESTAPI.

Aktuálně jsme si okruh zvolili na dvě platformy: Nativescript s Angularem a nativní aplikaci v Android Studiu (Java/Kotlin).
Nedokážeme se momentálně moc rozhodnout. U Nativescriptu nám jako hlavní argument slouží sdílení znalostí mezi Angularisty. Ovšem vzniklo zde podezření, že by mohl nastat problém s přístupem na HW (tento názor osobně nesdílím).
U nativní aplikace Java/Kotlin v podstatě nevidím žádné technologické riziko, pouze to, že je potřeba nastudovat nový jazyk, framework a toto nelze použít jinde než na Androidu (oproti Angularu).

Hlavní cílová aplikace je správa/řízení skladu propojená s výrobou. Další aplikace budou menší nástroje pro řešení nějakých specifických problémů, případně manažerské aplikace na iOS (zde možná bude stačit web).

Jako možnost zde ještě je zkusit Xamarin, protože jsme hlavně .NET vývojáři.

Jaký je Váš názor či zkušenosti s podobnou volbou. Jak by jste poradili?

Díky.

odkaz
8 ondrakoupil
odpověděl/-a 8.8.2020

U toho hybridního vývoje trváte vysloveně na Nativescriptu? Má to nějaký důvod?
Vždy záleží na tom, co chcete vyrobit, a každá technologie má slabé a silné stránky. Ale z toho, co zatím čtu, mi to připadá jako vhodný případ pro "pouhou" webovou aplikaci běžící ve WebView a zabalenou do podoby mobilní aplikaci přes Capacitor nebo Cordova. Využijete své zkušenosti s Angularem, budete moct použít své osvědčené nástroje na vývoj i ladění, nebudete se muset učit s úplně novou technologií a "nabít si hubu" se začátečnickými chybami. Snadno pak v budoucnu vytvoříte verzi pro iOS a jako bonus bude možné aplikaci spustit i přes web v obyčejném browseru (může se hodit třeba pro tu manažerskou aplikaci). Výkon je sice o něco nižší (nativní je vždy rychlejší), ale v dnešní době to je již prakticky neznatelné a výkon ovlivní spíš způsob naprogramování. Zprasená nativní aplikace bude na tom hůř, než dobře udělaná hybridní. Start je otázkou sekundy i na starším androidu.
Jak přesně potřebujete přistupovat přímo na HW?
Pro UI doporučuji mrknout na Ionic framework (https://ionicframework.com/) - zajistí téměr nativní look-and-feel, ovládání, animace, přechody a základní komponenty UI, včetně zmiňovaného virtuálního scrollování pro hodně dlouhé seznamy. Ionic dnes sice umí fungovat i s Reactem či Vue nebo úplně bez frameworku, ale původně vychází z Angularu a jeho podpora je nejlepší - což se vám hodí.
Pro offline databázi buď SQLite formou capacitor či cordova pluginu, anebo lépe PouchDB či RxDB - využívá standardní webové technologie a umí se sama synchronizovat s backendem.
Výslednou instalovatelnou aplikaci vytvoří Capacitor (https://getcapacitor.com/) anebo starší nástroj Cordova.
Scanování kódů zajistí buď capacitor/cordova plugin - např. https://github.com/phonegap/phonegap-plugin-barcodescanner, je jich více. Anebo ještě snáze - PDAčka nebo specializované čtečky většinou umí předat nascanovaný kód jako sérii stisků kláves s příslušnými číslicemi a následně enter (to se dá nastavit). Takže stačí dát focus do nějakého textového políčka, což lze programově, a následně nascanovat kód, a přečtená hodnota se do políčka "napíše" bez nutnosti jakéhokoliv programování na nižší úrovni. Nemám zkušenosti přímo se Zebrou, ale něco podobného jsem vyvíjel pro Flores a tam to přesně takhle může fungovat.

Komentáře

  • pilif : Zde bylo důvodem rozhodnutí, že Nativescript bude výkonnější než hybrid v "zabaleném" browseru. 13.8.2020

Pro zobrazení všech 4 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.