Wpis z mikrobloga

Ktoś ma doświadczenie w Xamarinie?

Będę potrzebował mieć aplikacje w obu platformach (iOS i Android), i zastanawiałem się, czy nie lepiej będzie tego napisać w Xamarinie, ale jak spojrzałem na dokumentacje, to z grubsza to wygląda tak, że piszemy tak samo jak na docelową platformę, tylko język jest jeden, więc imo bez sensu.

Jakieś opinie?

#xamarin #android #androiddev #ios #iosdev #programowanie #mdfkandroiddev
  • 22
@mdfk: Myślę, że może mieć to sens gdy masz dużo logiki biznesowej wspólnej dla obu platform, co w praktyce w aplikacjach mobilnych się nie zdarza :-).
@GwnBrz: No właśnie to samo pomyślałem, że jedynie to może być wspólne. Słyszałem, że trzeba dostosować niektóre elementy do odpowiedniej platformy, ale nie wiedziałem, że aż tak. To się i tak sprowadza do tego, że trzeba znać obie platformy przynajmniej w jakimś stopni, a wtedy to już wolę napisać natywnie.
@mdfk: Będziesz potrzebował mieć aplikacje NA obu platformach. Zastanawiasz się czy nie lepiej będzie TO napisać. ( ͡° ͜ʖ ͡°)

Co do meritum: Nic nigdy nie przewyższy natywnej aplikacji. Odradzałbym takie hybrydowe podejście.
@aseeon: To oczywiste, że natywna lepsza, ale czasami warto iść na inne rozwiązania, jeżeli dają odpowiednie korzyści. Jak się okazuje w tym wypadku, nie warto ;).
piszac aplikacje w xamarinie dostajesz natywna aplikacje.


@kielonek: z tego co się orientuję (i strona internetowa wydaje się to potwierdzać) to dostajesz natywny interfejs użytkownika, a nie natywną aplikację, a to jest różnica.
@kielonek: Pojęcie natywności jest dosyć płynne ostatnimi czasy. Skompilowana aplikacja na iOS to po prostu binarka z instrukcjami procesora. Aplikacja w Xamarinie to kod w CIL, który jest interpretowany przez common language runtime (Mono), poziom abstrakcji podobny jak w aplikacjach na Androida gdzie binarka to byte code wykonywany przez Dalvika. Czy to jest aplikacja natywna? Jeśli tak to czy aplikacja w asm.js jest natywna? Przecież to niewielka różnica, poziom abstrakcji pewnie
Ale nieduża


@Rev: Nieduża, jeśli zajdzie kilka dużych "jeśli". Jeśli masz bindingi do wszystkich API i jeśli wszystko są dobre i aktualne. Jeśli builder jest zgodny na poziomie ABI z natywnymi buildami. Jeśli nie ma bugów. I wtedy różnica jest dopiero nieduża ;)
@Rev: Możliwe, ja tylko teoretyzuję na temat Xamarina :-).

Alternatywa to Objective C, z którym praca dla programisty C++, Javy czy C# to masakra.


Myślę, że nie język jest problemem, bo to kwestia poznania składni. Gorzej może być z wzorcami projektowymi używanymi na danej platformie, z tego co się orientuję to bindingi Xamarina są bardzo dokładne, czyli w zasadzie wszystko pisze się dokładnie tak samo jak w Objective-C ale używając składni
@Rev: https://www.youtube.com/watch?v=WkNbRUqnSSc&t=7m50s

Skoro Xamarin produkuje kod maszynowy to po co jest warstwa "Runtime", w której jest "Mono" na iOS i Android?

No i jak tak sobie patrzę na dokumentację to niewiele się to różni od ObjC.

http://developer.xamarin.com/guides/cross-platform/deployment,_testing,_and_metrics/memory_perf_best_practices/

Plus taki, że możesz używać wielu bibliotek .NETowych np. do wątków, ale GCD to akurat upraszcza sprawę, a nie utrudnia.