Wspólna technologia Android i IOS

0

Zauważyłem, że zdecydowana większość firm oferujących oprogramowanie na urządzenia mobilne oferuje jednocześnie wersję na IOS i Android.

Z tego, co wiem, najczęściej na Android programuje się w Javie, a na IOS programuje się w Objectice C i nie da rady na krzyż, czyli napisać w Objective C dla Androida i w Javie na IOS.

Zakładając, że programy są pisane w wyżej wymienionych językach, już sam fakt, że są to dwa różne języki powoduje, że trzeba mieć dwa niezależne projekty pisane osobno, ale im większy projekt, tym jest to bardziej karkołomne, bo każą modyfikację trzeba równolegle wprowadzać w obu programach, nie wystarczy wciskać Ctrl+C i Ctrl+V.

W komputerach PC, w systemie Windows, Linux i MacOS można programować w C++. To powoduje, że możliwe jest napisanie programu w taki sposób, że logika biznesowa jest zawarta w osobnych klasach, a obsługa interfejsu jest zawarta w osobnych klasach. Jeżeli chce się używać natywnych kontrolek w poszczególnych systemach, czyli WinApi/Gtk/Cocoa, to i tak większość kodu, czyli logika biznesowa, będzie identyczna i wystarczy w jednym projekcie wprowadzić zmianę, sprawdzić działanie i potem w ciemno skopiować kod do pozostałych projektów. Co innego, jeżeli sprawa dotyczy interfejsu GUI, wtedy modyfikację trzeba wykonać osobno we wszystkich projektach. To podejście eliminuje konieczność równoległych modyfikacji tych samych funkcjonalności dla każdej wersji osobno i znacznie skraca czas wprowadzania zmian.

W temacie Android/IOS powyższe podejście jest możliwe dzięki Monodroid/MonoTouch, bo w obu przypadkach programuje się w C#, a więc jeżeli oddzieli się logikę od interfejsu, to da się zrobić identyczne klasy z logiką biznesową, co eliminuje konieczność wielokrotnego dokonywania modyfikacji. Słyszałem o Qt na Android i IOS, ale to dopiero raczkuje. natomiast na całym projekcie Mono niektórzy programiści C#/.NET wieszają psy, czy słusznie, to już inny temat.

W takim razie, czy istnieje szeroko stosowana technologia pozwalająca w tym samym języku, np. w C++, tworzyć i na IPhone i na Adroida? Czy jedyną taką technologią jest Monodroid/Monotouch?

Jaką technologię stosują najczęściej? Nie wydaje mi się, żeby zupełnie osobno pisali na IOS w Objective C i na Adroida w Javie, bo tak, jak pisałem, jest to karkołomne, bo w zasadzie każda modyfikacja wymaga dwa razy tyle czasu i łatwo o pomyłki.

0
  1. Phonegap i jemu podobne rozwiązania, czyli klepanie w Javascript + HTML5 które są obsługiwane przez wszystkie platformy mobilne
  2. Javę można z powodzeniem odpalić na Androidzie a także na Blackberry i na jailbreakowanym iOSie. Jeśli chodzi o xamarina (teraz to monotouch) to słyszałem że to jest trochę raczkujące rozwiązanie, ale nie wiem ile w tym prawdy.
    Niemniej jednak caly czas stanowi to spory problem i jest tu pewna nisza rynkowa, więc jeśli masz jakiś rewolucyjny pomysł jak ją "załatać" to spróbuj i zarób miliony ;)
0

Jeżeli chcesz napisać jakąkolwiek poważną aplikację to zapomnij o phonegap i innych rozwiązaniach jemu podobnych. Dlaczego? Będziesz miał jakiś problem do rozwiązania (a problemów podczas pisania aplikacji na androida pojawia się wiele) i 99% odpowiedzi na Twoje problemy będzie rozwiązane w javie (i w objective-c na ios). Podobnie jest z xamarinem. Ludzie zakładają wątki na stackoverflow z jakimś pytaniem i nie ma odpowiedzi nawet po kilku miesiącach. Istotny jest również fakt, że wszystkie nowe rozwiązania w androidzie w frameworkach takich jak phonegap pojawiają się z opóźnieniem (często dość dużym), więc musisz czekać na dodanie nowych funkcjonalności, z których można normalnie korzystać w standardowym sdk, albo wykupywać droższe plany, które dają szybszy dostęp do aktualizacji. Jesteś również zdany na łaskę twórców danego frameworka (co zrobisz gdy za pół roku okaże się, że phonegap,xamarin przestaje się rozwijać?). Co do "karkołomności", nikt nie powiedział, że programowanie jest zawodem zawsze łatwym i przyjemnym. Czasami po prostu, kolokwialnie mówiąc trzeba się narobić. Nie wiem o jakiej aplikacji myślisz, ale zapewniam Cię, że więcej nocy nieprzespanych zafundujesz sobie nie korzystając ze standardowego frameworka (mam tutaj na myśli każdą platformę mobilną).

0

Jeśli jesteś masochistą to możesz pisać logikę w czystym C. Objective-C to nadzbiór C, nawet bardziej kompatybilny niż samo C++, natomiast dla Androida jest NDK. Nie znam się na programowaniu w Androidzie, ale wydaje mi się rozsądne aby była jakaś wbudowana w niego szyna danych pomiędzy programami w NDK a tymi w Javie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1