Mobile cu cunostinte de web dev


(Florin Matincă) #21

Din experienta, framework-urile hibride o dau rau in bara cu performanta in special pe Android, datorita componentei webview - incearca sa faci o galerie foto mai complexa sau un timeline in stilul Facebook si te vei lovi de problema de performanta.

Deasemenea, daca doresti sa ai animatii fluente sau acces la ultimele features din SDK nu prea ai cum face asta folosind tehnologii hibride. Desigur, in teorie poti multe - practic inca astept sa vad o aplicatie hibrida care se apropie de una nativa ca ux si performanta.

O capcana in care cad multi utilizatori de framework-uri hibride este un UX comun iOS si Android. Apple si Google n-au facut ghiduri in privinta asta degeaba.

React Native compileaza si te duce la o aplicatie nativa, dar setul de componente de care dispui este limitat. Deasemenea, daca doresti sa le extinzi sau sa accesezi zone din SDK nesuportate de ei, tot la cod nativ ajungi - ObjC/Swift/Java/Kotlin.


(Andrei) #22

Xamarin de exemplu rezolva toate problemele enumerate. E un layer peste nativ, se compileaza in cod nativ, nu se mimeaza nimic. Daca exista interes, as putea organiza un meeting virtual sa fac o prezentare la Xamarin, cum ruleaza, compileaza, avantaje, etc., desi exista deja o gramada pe youtube.

Daca as fi avocatul diavolului putin, legat de web-view, pe iOS exista de vreo 2 versiuni un control web-view mult mai performant decat vechiul UIWebView. Dar chiar si asa, tot prefer ceva care e nativ, arata si functioneaza nativ.


(Florin Matincă) #23

De acord, Xamarin este o alternativa foarte buna, au mapare 1-la-1 cu SDK-ul (daca nu vorbim de Xamarin Forms, unde ajungi in acelasi punct ca si cu React Native).

Plus ca se poate scrie codul in Visual Studio :grinning:


(István F.) #24

Partea proasta cu Xamarin e ca are 30Gb, de aceea recomand prima data react-native daca trebuie ceva simplu.

Mie cel putin nu imi place sa tin 30 Gb pe ssd doar ca sa il folosesc o data pe luna. (dar care necesita ssd daca vreau performanta)

Expo apps are React Native apps which contain the Expo SDK. The SDK is a native-and-JS library which provides access to the device’s system functionality (things like the camera, contacts, local storage, and other hardware). That means you don’t need to use Xcode or Android Studio, or write any native code, and it also makes your pure-JS project very portable because it can run in any native environment containing the Expo SDK.

https://expo.io are doar 90 Mb. (bine, exista o problema cu hot-reload-ul, create-react-native-app e ceva mai ok)


(Andrei) #25

Ca limitari, Xamarin nu e la fel ca React Native. Cu React Native daca ai nevoie de ceva, o functionalitate nativa, care nu e in React Native, ajungi sa scrii module native. Ceea ce inseamna ca ajungi sa scrii cod Objective C/Swift si Java.
Nu acelasi lucru se intampla cu Xamarin, cu Xamarin, fiind un layer de API peste nativ (Xamarin cred ca are niste tool-uri automate care creeaza API-uri cu aceleasi nume, fiind mai degraba niste wrappers\forwarders peste API-urile native), ai tot API-ul nativ la dispozitie.

Legat de Xamarin Forms, e un framework scris in C#, open source, dezvoltat chiar de Xamarin. Fiind dezvoltat cu Xamarin, ca limitari nu prea il putem compara cu React Native. Nu ajungi sa ai nevoie sa scrii cod nativ in Objective C/Swift/Java.


(Andrei) #26

Acum e 19.9 GB, si include Android 25 SDK (SDK-ul nativ) si o imagine nativa x86 Android emulator (pentru cine nu stie, sunt chestii de care ai nevoie oricum daca ai dezvolta in Java nativ).

We’ve been working on making the default installation for Xamarin smaller and smarter, and with 15.4 the Xamarin workload size has been significantly reduced. We saw the size drop from 31.1 GB to 19.9 GB (a 36% reduction), when testing on a new Windows 10 machine! The workload now also includes the Android API 25 SDK and an x86 Android emulator image, so you can start developing apps even quicker.

VS 15.4 e deja released.


(Andrei) #27

Ca sa revin on topic, pentru cine e web dev, e obisnuit si cunoaste “frumoasele” parti din web dev legate de tooling si configurare, si nu stie C# si .NET, sau nu vrea\nu are timp sa invete C#.NET, React Native sau NativeScript sunt OK in special pentru aplicatii care nu sunt mari. Recomand totusi un mic research, Google is your friend.


(Florin Matincă) #28

@Andrei2 Comparam Xamarin Forms cu React Native, nu Xamarin for iOS/Android. Incearca in Xamarin Forms sa customizezi un buton sau un label, ajungi sa scrii un custom renderer in cod nativ …


(Andrei) #29

Cred ca e o confuzie cand vorbim de “cod nativ”. In React Native chiar trebuie sa scrii un modul cu Objective C/Swift/Java daca ai nevoie de ceva ce React Native nu are. Cu Xamarin/Xamarin Forms nu se intampla asta.

Legat de Xamarin Forms: intr-adevar, ai nevoie uneori sa faci un “renderer”, dar e tot cod C#. Un renderer e o chestie de Xamarin Forms, de framework, nu e ceva cod nativ. Xamarin Forms e interesant, e extrem de productiv, dar poate fi un pain in de ass daca nu intelegi cum functioneaza si ce limitari are. La fel de bine poti dezvolta doar cu Xamarin, fara Xamarin Forms, dar pierzi crearea de UI cross platform (lose some, win some). Xamarin Forms e un framework de UI open source si scris in C# , e o abstractie cross platform peste UI-ul nativ (desi o abstractie, la runtime se creeaza insa controale native, totul e nativ)


(Florin Matincă) #30

Da, m-am exprimat gresit, scrii tot C#, dar tot trebuie sa cunosti topics related to iOS/Android.

Imi place la Xamarin Forms ca se genereaza UX-ul specific platformei, dar daca ajungi la prea multe customizari as tinde sa aleg tot Xamarin for iOS/Android.


(Andrei) #31

Da, tot trebuie sa intelegi (din fericire sau din pacate, depinde de aplicatia pe care o scrii) cum functioneaza OS-urile separat, controale, navigare, lifecycle-uri ale aplicatiei si ecranelor, etc.
Chestia de ce inseamna “nativ”, a devenit atat de diluata din cauza diverselor tehnologii, a capatat din pacate multe nuante. Am citit diverse surse unde imi ia cateva secunde sa inteleg la ce se refera de fapt cand se vorbeste despre “nativ”.

Da, asta cred si eu ca e esenta alegerii intre doar Xamari si Xamarin + Xamarin Forms.
In functie de ce ai de facut, Xamarin Forms te poate aduce usor in pragul bi-polaritatii :smiley: Acum te bucuri ce ciumeg iti merge, peste 5 min “WTF WTF”. Daca dezvolti o aplicatie complicata, trebuie sa intelegi cu adevarat cum functioneaza Xamarin Forms, ca sa stii la ce te inhami. Xamarin Forms e interesant dar are si probleme/limitari (ca orice altceva). Unele decizii in arhitectura Xamarin Forms nu au fost cele mai bune. Mi-as fi dorit ca Xamarin sa investeasca mult mai mult in Xamarin Forms, mai ales dupa ce au fost cumparati de Microsoft, caci are un potential incredibil.


(Werner Banyacskay) #32

Iti recomand React Native.

Am avut aceeasi dilema, iar eu am inceput prin a explora o aplicatie nativa existenta in App Store (am cumparat-o de pe flippa.com). Dupa care, pe alt proiect am folosit React Native, si mi-a fost foarte usor sa fac chestii relativ simple; mi-a fost usor sa incep sa dezvolt ceva. Partea faina, dupa cum s-a mai spus, este ca ai codul nativ care il pui in xCode si de acolo poti face ce vrei tu mai departe.

Pe de alta parte, iti recomand sa nu fii reticient sa inveti limbajele native pentru aceste aplicatii. Mereu e bine sa iti largesti orizontul, si daca depui putin efort vei vedea ca nu sunt rocket science. :smile: