Coraz więcej platform mobilnych jest uruchamianych, a sdk są dostępne dla programistów. Dostępne są różne platformy mobilne: Android, iOS, Moblin, Windows mobile 7, RIM, symbian, bada, maemo itp.
A tworzenie aplikacji wieloplatformowych to ból głowy dla programistów. Szukam wspólnych rzeczy na platformach, które pomogą programistom, którzy chcą przenieść aplikację na wszystkie platformy. Na przykład, jakie są rozdzielczości ekranu różnicowego, metody wprowadzania, obsługa Open GL itp., Podziel się szczegółami, które znasz dla dowolnej platformy.
Czy są możliwości, pisząc kod w html (typ widgetu) i ładując go do natywnej aplikacji. Wiem o Androidzie, w którym możemy dodać widok sieciowy do aplikacji poprzez wywołaniesetContentView(view)
Udostępnij szczegółowe informacje o klasie, w której możemy dodać widok HTML do natywnych aplikacji różnych typów platform, które znasz.
Celem tego wątku jest udostępnianie wspólnych informacji programistom. oznaczanie jako wiki społeczności.
Narzędzia i biblioteka wieloplatformowa
XMLVM, Codename One i iSpectrum (kompilacja krzyżowa kodu Java z aplikacji na Androida lub tworzenie kodu od podstaw
Phone Gap (aplikacje mobilne dla wielu platform)
Titanium (do tworzenia natywnych aplikacji mobilnych i stacjonarnych z technologiami internetowymi)
Mono Touch (C # dla iPhone)
rhomobile - http://rhomobile.com/ próbki są tutaj: http://github.com/rhomobile/rhodes-system-api-samples
Sencha Touch - Sencha Touch to platforma aplikacji mobilnej HTML5, która umożliwia tworzenie aplikacji internetowych, które wyglądają i działają natywnie na urządzeniach z ekranem dotykowym Apple iOS i Google Android. http://www.sencha.com/products/touch/
Corona - wieloplatformowa biblioteka aplikacji na Iphone / Ipad / Android. Zbyt niesamowite. http://anscamobile.com/corona/
Przewodnik po przenoszeniu istniejącej aplikacji na Androida do Windows Phone 7 http://windowsphone.interoperabilitybridges.com/articles/windows-phone-7-guide-for-iphone-application-developers
- Jquery Mobile Touch-Optimized Web Framework dla smartfonów i tabletów
Odpowiedzi:
Moja odpowiedź tutaj obejmuje niektóre ograniczenia techniczne narzędzi wieloplatformowych, ale pozwól mi trochę rozwinąć:
Myślę, że narzędzia wieloplatformowe zawsze były również wykorzystywane do robienia zakupów, ponieważ takie narzędzia mają niewłaściwy filozoficzny cel.
Wszystkie zalety narzędzi cross-plaform to korzyści, jakie przynoszą programistom . Są sprzedawane z myślą, że pozwalają programistom pisać - raz uruchomione - gdziekolwiek. Są sprzedawane z myślą, że pozwalają programistom rozszerzyć swój rynek bez uczenia się nowych interfejsów API. Są sprzedawane z myślą, że pozwalają programistom obniżyć koszty i skrócić czas wprowadzania na rynek.
To, na czym NIE sprzedaje się narzędzia typu cross-plaform, to korzyści, jakie przynoszą użytkownikom końcowym .
Korzyść dla użytkownika końcowego nie jest punktem sprzedaży, ponieważ rozwój międzyplatformowy rzadko przynosi korzyści użytkownikowi końcowemu. Końcowego użytkownika nie obchodzi, jak ciężko pracował programista, aby wprowadzić produkt na rynek. Nie obchodzi ich też, na ilu platformach aplikacja może działać, gdy nie używają tylko jednej platformy. Dbają tylko o to, czy aplikacja robi to, czego potrzebują, na sprzęcie, na którym jest potrzebna. O ile nie mają konkretnej potrzeby uruchamiania aplikacji na wielu różnych platformach, fakt, że tak jest, nie przynosi im żadnej wartości.
I odwrotnie, nieuniknione kompromisy związane z tworzeniem wieloplatformowego interfejsu API oznaczają, że wszystkie aplikacje utworzone przez interfejs API będą w najlepszym przypadku klasy B na każdej platformie. Nigdy nie będą najlepszym narzędziem do wykorzystania na każdej platformie.
Wszystko to oznacza, że w większości przypadków użycia narzędzia wieloplatformowe dają użytkownikowi końcowemu produkt gorszy w porównaniu do tych stworzonych z wykorzystaniem interfejsów API specyficznych dla platformy. Końcowy użytkownik zawsze będzie miał lepszy wybór.
Na dłuższą metę zarabiasz, udostępniając użytkownikom końcowym najbardziej przydatne narzędzia. Jeśli nie koncentrujesz się filozoficznie na ułatwianiu życia użytkownika końcowego i zwiększaniu jego produktywności, od samego początku jesteś skazany na porażkę. Użytkownicy końcowi mają wiele możliwości wyboru, a jeśli Twoje narzędzie nie jest jednym z najlepszych, nie trafisz na rynek.
Używaj narzędzi wieloplatformowych tylko wtedy, gdy myślisz, że „użytkownicy naprawdę skorzystają na uruchomieniu tej aplikacji na wielu różnych platformach”. Jeśli zaczniesz przyglądać się narzędziom wieloplatformowym wyłącznie dlatego, że ułatwią ci życie (programistom), to wybrałeś je z niewłaściwego powodu i bardziej cię zranią niż pomogą.
źródło
Istnieje kilka podejść do programowania międzyplatformowego na urządzeniach mobilnych. Oczywiście wszystkie mają ograniczenia. Żadne rozwiązanie nie jest w stanie wykorzystać wszystkich funkcji urządzenia tak, jak aplikacja natywna.
Ponowne użycie kodu
Chociaż wszystkie mobilne systemy operacyjne nie używają tego samego języka programowania i interfejsu API, czasami można udostępniać niektóre klasy lub kod warstwy logiki.
Na przykład C ++ można prawdopodobnie ponownie wykorzystać do aplikacji na iOS , do aplikacji na Androida przy użyciu NDK , do aplikacji Symbian, ponieważ są one opracowywane w C ++ itp.
Niektóre rozwiązania oferują również możliwość napisania aplikacji w innym języku niż ten, którego zwykle używa urządzenie. Najbardziej znane (a właściwie jedyne jakie znam) są komercyjne i oparte na projekcie Mono (programowanie w C #):
Ale nie jestem pewien, czy naprawdę możemy nazwać to programowaniem wieloplatformowym, ponieważ ponowne użycie kodu jest ograniczone w zależności od urządzenia:
Część interfejsu użytkownika również pozostaje specyficzna dla każdego urządzenia.
tworzenie stron internetowych
Typową odpowiedzią na pytanie o tworzenie aplikacji na różne platformy dla telefonów komórkowych jest tworzenie stron internetowych. Potrzebowalibyśmy wtedy opakowania, które będzie korzystało z przeglądarki mobilnej, aby wyglądało i zachowywało się jak aplikacja natywna. W ten sposób działają niektóre ramy międzyplatformowe, które zobaczymy w dalszej części.
Pojawienie się HTML5 zapewnia funkcje tworzenia stron internetowych, które można było wykonać tylko za pomocą natywnej aplikacji, takiej jak geolokalizacja, aplikacja offline, pamięć lokalna.
Możemy znaleźć coraz więcej frameworków do tworzenia aplikacji internetowych na telefony komórkowe o natywnym wyglądzie i działaniu, korzystając z najnowszych standardów internetowych HTML5, CSS3, Js:
Ale HTML5 jest wciąż bardzo młody i implementacja może się różnić w zależności od przeglądarki. Większość domyślnych przeglądarek mobilnych korzysta z silnika WebKit (głównym wyjątkiem jest telefon komórkowy / telefon z systemem Windows przy użyciu przeglądarki Internet Explorer), a mimo to niekoniecznie obsługują te same funkcje . Praca z lokalną bazą danych jest nadal niewygodna i nie możemy być pewni, jak zostanie zaimplementowana przez różne przeglądarki. Co więcej, nawet w przypadku HTML5 tworzenie stron internetowych jest nadal bardzo ograniczone w porównaniu z aplikacjami natywnymi. Nie możesz uzyskać dostępu do kontaktów, aparatu, akcelerometru itp.
Edycja: Na początku tego miesiąca W3C dostarczyło ostrzeżenia o ewolucji HTML5: artykuł z ZDNet
Tak więc będzie pasować tylko do ograniczonej kategorii zastosowań.
Struktury międzyplatformowe
A niż mamy wieloplatformowe ramy aplikacji mobilnych. Za pomocą którego można przypuszczalnie raz opracować i wdrożyć na różnych platformach. Rozwiązania te zwykle koncentrują się na systemach iOS i Android i opierają się na silniku WebKit. Oferują większą interakcję z funkcjami telefonu, jednocześnie rozwijając technologie internetowe. Najbardziej znane to Nitobi PhoneGap, RhoMobile Rhodes, Appcelerator Titanium. Ale wiele innych jest dostępnych i nie wszyscy używają tej samej techniki, co MoSync, która tłumaczy twój kod na własny język pośredni przed skompilowaniem go dla pożądanej platformy.
[1]
Pamiętaj, że Apple ma specjalne zasady dotyczące aplikacji napisanych na ich platformę. Wydaje się, że obecnie nie blokują tych aplikacji, ale jest to informacja, którą należy wziąć pod uwagę.Edycja: Apple zmienił tę politykę od 9 września.źródło
Podczas wdrażania jako aplikacji internetowej (html5, jak wspomniano powyżej) pojawia się pewne podobieństwo, ale w przypadku bogatych aplikacji natywnych interfejsy API są zupełnie inne dla różnych smartfonów.
HTML5 może nieco poprawić sytuację, ale aby robić interesujące rzeczy, musisz być natywny.
Istnieją „wieloplatformowe” frameworki dla smartfonów, takie jak Phonegap, ale słyszałem głównie złe rzeczy o używaniu go do „prawdziwej” pracy. (dużo narzutów itp.)
źródło
Tak, HTML5 przyciąga uwagę. Powinieneś również spojrzeć na to konsorcjum i platformę, które pojawią się w czwartym kwartale. Nie jestem pewien powodzenia tego projektu, bo brzmi to jak ogromne wyzwanie, ale oto szczegóły:
Strona internetowa: http://www.wholesaleappcommunity.com/default.aspx
Wiadomości: http://news.google.de/news/search?aq=f&pz=1&cf=all&ned=us&hl=en&q=%22Wholesale+Applications+Community%22
.
źródło
O ile wiem, większość z tych urządzeń jest w stanie to uruchomić:
Java ME - najbardziej wszechobecna platforma aplikacji dla urządzeń mobilnych
Myślę, że może to służyć zarówno jako dobry, jak i zły przykład.
źródło