Tworzenie aplikacji na różne platformy iOS / Android [zamknięte]

113

Od jakiegoś czasu bawię się tworzeniem aplikacji na Androida w Javie i zaczynam sobie z tym radzić. Jeśli jednak chcę zacząć od wersji na iOS, muszę zakodować wszystko od zera - co jest, cóż, niepożądane.

Zastanawiałem się, jakie rozwiązania wieloplatformowe są dostępne i jak dobrze sprawdzają się w praktyce. Myślałam o aplikacjach internetowych - być może przy użyciu jQuery Mobile, lub Titanium lub Adobe Flash / Flex / Air. Nie mam też jeszcze Maca, w który prawdopodobnie będę musiał zainwestować.

Więc moje pytania:

  1. Jakie istnieją międzyplatformowe środowiska programistyczne dla systemów iOS / Android (i / lub innych urządzeń)?

  2. Jakie masz doświadczenia z tymi narzędziami? (to jest to, co naprawdę chciałbym wiedzieć)

Alister
źródło
1
Alister, z pewnością nie jesteś pierwszą osobą, która zadaje tego rodzaju pytanie, ani też nie jesteś pierwszą osobą, która chce odpowiedzi! :) Nie zapomnij o PhoneGap, o którym słyszałem mieszane recenzje, i Red Foundry, która jest bardziej wykrawarką do ciastek, ale wygląda dobrze - jeszcze nie cross-platformowa.
makdad
1
Możesz również skorzystać z PhoneGap. Skorzystałem z tego i radzę ci to zrobić. Istnieje możliwość wygenerowania pliku exe (IPA dla iOS) za pomocą aplikacji stworzonej na PhoneGap w systemie Android.
Jayprakash Dubey
Chcę zaktualizować to pytanie, ponieważ kończy się rok 2016 i zmienił się krajobraz narzędzi wieloplatformowych. Powiedziałbym, że zależy to od wybranego języka programowania i od tego, gdzie Twój zespół ma najwięcej punktów doświadczenia z: 1. JavaScript: Phonegap Wydajność jest słaba na urządzeniach mobilnych, dlatego zaleca się używanie narzędzi z natywnymi komponentami, ale do logiki aplikacji jest zalecany JS. Dostępne opcje to V-Play ( v-play.net/apps ) lub React ( awarenative.com ). 2. C #: Xamarin to Twój przyjaciel. 3. C ++: Użyj frameworka C ++, takiego jak Qt ( qt.io ) Uwaga: Jestem jednym z twórców V-Play, który jest oparty na Qt.
Christian Feldbacher
Odpowiedź: Flutter , to nowa platforma mobilnego interfejsu użytkownika Google do tworzenia natywnych interfejsów na iOS i Androida w rekordowym czasie.
naXa
Istnieje również obiecujący aktywny projekt haxe.org .
Eugene Gr. Philippov

Odpowiedzi:

104

Zastrzeżenie: Pracuję dla firmy Particle Code, która tworzy ramy wieloplatformowe. W tej przestrzeni jest mnóstwo firm. Co tydzień pojawiają się nowe. Dobra wiadomość dla Ciebie: masz duży wybór.

Ramy te przyjmują różne podejścia, a wiele z nich jest zasadniczo zaprojektowanych w celu rozwiązywania różnych problemów. Niektóre koncentrują się na grach, inne na aplikacjach. Zadałbym następujące pytania:

Co chcesz napisać Aplikacja korporacyjna, aplikacja zwiększająca produktywność, gra logiczna, strzelanka FPS?

Jakie środowisko programistyczne preferujesz? IDE czy zwykły stary edytor tekstu?

Czy masz silne przeczucia co do języków programowania? Spośród znanych mi frameworków możesz wybierać spośród ActionScript, C ++, C #, Java, Lua i Ruby.

Moja firma jest bardziej zaangażowana w grę, więc nie bawiłem się tak często z frameworkami JavaScript + CSS, takimi jak Titanium, PhoneGap i Sencha. Ale mogę wam trochę opowiedzieć o niektórych frameworkach zorientowanych na gry. Gry i bogate aplikacje internetowe to obszar, w którym mogą zabłysnąć wieloplatformowe frameworki, ponieważ aplikacje te przywiązują większą wagę do unikalności wizualnej, a mniej do wtapiania się w natywne interfejsy użytkownika. Oto kilka frameworków, których należy szukać:

  • Unity www.unity3d.com to silnik gier 3D. To naprawdę nie przypomina żadnego innego środowiska programistycznego, w którym pracowałem. Budujesz sceny z modeli 3D i definiujesz zachowanie, dołączając skrypty do obiektów. Możesz pisać w JavaScript, C # lub Boo. Jeśli chcesz napisać grę opartą na fizyce 3D, która będzie działać na iOS, Android, Windows, OS X lub konsolach, to prawdopodobnie jest to narzędzie dla Ciebie. Możesz także pisać gry 2D, korzystając z zasobów 3D - dobrym przykładem jest gra niezależna Max and the Magic Marker, oparty na fizyce 2D side-scroller napisany w Unity. Jeśli tego nie wiesz, polecam to sprawdzić (szczególnie jeśli w Twoim domu są dzieci). Max jest dostępny na PC, Wii, iOS i Windows Phone 7 (chociaż ta ostatnia wersja jest portem, ponieważ Unity nie obsługuje WinPhone). Unity zawiera kilka przykładowych gier wraz z zasobami 3D i teksturami, co naprawdę pomaga przyspieszyć pracę w dość skomplikowanym środowisku.

  • Corona www.anscamobile.com/corona to silnik gier 2D, który wykorzystuje język skryptowy Lua i obsługuje systemy iOS i Android. Zaletą Corony jest możliwość bardzo szybkiego pisania gier opartych na fizyce w kilku linijkach kodu, a duża liczba gier opartych na Coronie w sklepie z aplikacjami na iOS świadczy o jej sukcesie. Środowisko jest bardzo ubogie, co niektórym spodoba się. Jest wyposażony w symulator i debugger. Dodajesz wybrany edytor tekstu i masz środowisko programistyczne. Podstawowy zestaw SDK nie zawiera żadnych komponentów interfejsu użytkownika, takich jak przyciski lub pola list, ale dodatek CoronaUI jest dostępny dla subskrybentów.

  • Particle SDK www.particlecode.com to nieco bardziej ogólne rozwiązanie wieloplatformowe z tłem w grach. Możesz pisać w języku Java lub ActionScript, korzystając z modelu aplikacji MVC. Zawiera środowisko IDE oparte na Eclipse z edytorem interfejsu użytkownika WYSIWYG. Obecnie obsługujemy tworzenie dla urządzeń z systemem Android, iOS, webOS i Windows Phone 7. Możesz także wyświetlać pliki Flash lub HTML5 na potrzeby internetu. Struktura została pierwotnie opracowana dla gier społecznościowych online dla wielu graczy, takich jak poker i backgammon, i pasuje do gier 2D i aplikacji ze złożoną logiką. Framework obsługuje grafikę 2D i zawiera silnik fizyki 2D.

Uwaga:

Dzisiaj ogłosiliśmy, że Particle Code został przejęty przez Appcelerator, twórców wieloplatformowego frameworka Titanium.

...

Od 1 stycznia 2012 r. [ Particle Code ] nie będzie już oficjalnie obsługiwać platformy [ Particle SDK ].

Źródło

  • Airplay SDK www.madewithmarmalade.com to platforma C ++, która umożliwia programowanie w programie Visual Studio lub Xcode. Obsługuje zarówno grafikę 2D, jak i 3D. Airplay jest przeznaczony dla systemów iOS, Android, Bada, Symbian, webOS i Windows Mobile 6. Mają także dodatek do tworzenia aplikacji AirPlay na PSP. Mój C ++ jest bardzo zardzewiały, nie bawiłem się nim zbyt często, ale wygląda fajnie.

Jeśli chodzi o krzywą uczenia się, powiedziałbym, że Unity ma najbardziej stromą krzywą uczenia się (dla mnie), Corona była najprostsza, a Particle i Airplay są gdzieś pomiędzy.

Inną interesującą kwestią jest sposób, w jaki platformy obsługują różne czynniki kształtu. Corona obsługuje dynamiczne skalowanie, które będzie znane programistom Flash. Jest to bardzo łatwe w użyciu, ale oznacza, że ​​marnujesz miejsce na ekranie podczas przechodzenia z ekranu 4: 3, takiego jak iPhone, do 16: 9, jak nowe urządzenia qHD z Androidem. Edytor interfejsu użytkownika programu Particle SDK umożliwia projektowanie elastycznych układów, które skalują się, ale także pozwala dostosować układy do indywidualnych rozmiarów ekranu. Zajmuje to trochę więcej czasu, ale pozwala dostosować wygląd aplikacji do każdego ekranu.

Oczywiście to, co działa w Twoim przypadku, zależy od Twojego indywidualnego gustu i stylu pracy, a także Twoich celów - dlatego polecam pobranie kilku z tych narzędzi i wypróbowanie ich. Wszystkie te narzędzia można wypróbować bezpłatnie.

Poza tym, gdybym tylko mógł zamieścić ogłoszenie o usłudze publicznej - większość tych narzędzi jest w naprawdę aktywnym rozwoju. Jeśli znajdziesz framework, który Ci się podoba, koniecznie wyślij opinię i daj mu znać, co Ci się podoba, czego nie lubisz i funkcje, które chciałbyś zobaczyć. Masz realną możliwość wpływania na kolejne wersje tych narzędzi.

Mam nadzieję że to pomoże.

DocDude
źródło
Myślałem bardziej o rozwoju przedsiębiorstwa, ale być może zainspirowałeś mnie do przyjrzenia się jednemu z tych SDK dla zabawy.
Alister
linki do każdego frameworka byłyby przydatne
Petrus Theron
2
Aktualizacja: Particle Code został przejęty przez Appcelerator, twórców Titanium, więc los pakietu Particle SDK jest niepewny. Airplay zmienił nazwę, raczej w niewytłumaczalny sposób, na „Marmalade”.
DocDude
15

MonoTouch i MonoDroid, ale nikt nie zgadnie, co stanie się teraz z tą częścią Attachmate. Oczywiście nawet w przypadku rozwiązań mono nadal tworzysz widoki inne niż międzyplatformowe, ale chodzi o ponowne wykorzystanie logiki biznesowej.

Miej oko na http://www.xamarin.com/ , ciekawie będzie zobaczyć, co wymyślą.

Derek Beattie
źródło
12

Moje doświadczenie w tworzeniu czegoś bardzo prostego w PhoneGap + jQuery Mobile było w porządku. Udało mi się to szybko zrobić na iOS. Jednak nie działało to na moich telefonach z Androidem bez wprowadzenia pewnych zmian. Projekt był bardzo prostą aplikacją do robienia zdjęć i umieszczania ich na stronie internetowej. I pod koniec dnia wydawało się „niezgrabne” w porównaniu z prawdziwą aplikacją natywną.

Nie wierzę, że kiedykolwiek będzie łatwy rozwój międzyplatformowy. Myślę, że przeglądarka jest tak blisko, jak to tylko możliwe. Wybierając coś takiego jak PhoneGap, myślę, że po prostu zamieniasz jeden zestaw punktów bólu na inny zestaw punktów bólu.

Evan
źródło
7

Jeśli nie chcesz używać pełnoprawnego frameworka do programowania na wielu platformach, spójrz na C ++ jako opcję. iOS w pełni obsługuje używanie C ++ do logiki aplikacji za pośrednictwem Objective-C ++. Nie wiem, jak dobrze obsługa C ++ w systemie Android za pośrednictwem NDK nadaje się do wykonywania logiki biznesowej w C ++, a nie tylko niektórych fragmentów kodu krytycznych dla wydajności, ale jeśli ten przypadek użycia jest dobrze obsługiwany, możesz spróbować.

Takie podejście ma oczywiście sens tylko wtedy, gdy logika aplikacji stanowi największą część projektu, ponieważ interfejsy użytkownika będą musiały być napisane indywidualnie dla każdej platformy.

W rzeczywistości C ++ jest jednym z najczęściej obsługiwanych języków programowania (z wyjątkiem C), a zatem jest podstawowym językiem większości dużych aplikacji wieloplatformowych.

szlachetka
źródło
3
Przy okazji, Android wydaje się bezpośrednio wspierać działania napisane tylko w C ++: developer.android.com/reference/android/app/NativeActivity.html
yeoman
4
Z jednym zastrzeżeniem - brak dostępu do języka Java (czyli brak integracji bibliotek innych firm lub dostępu do zestawu SDK) z NativeActivity. Nie nadaje się do wielu celów.
rbgrn
6

Chociaż dopiero zacząłem przyglądać się temu obszarowi rozwoju, myślę, że sprowadza się to do tej podstawowej różnicy: niektóre narzędzia zachowują oryginalny kod, a niektóre przenoszą na natywne ...

na przykład PhoneGap po prostu zachowuje kod HTML / CSS / JS, który piszesz, i opakowuje go w wystarczający kod iOS, aby kwalifikować się jako aplikacja, podczas gdy Appcelerator dostarcza projekt XCode ... więc jeśli nie znasz iOS, wtedy nie przyniosłoby to żadnych korzyści w stosunku do PhoneGap, ale jeśli WARTO trochę wiesz, może to dać ci trochę więcej możliwości dostosowania natywnych wersji po większym wysiłku związanym z kodowaniem.

Sam nie korzystałem z appceleratora, ale kilka tygodni temu pracowałem nad projektem, w którym jeden z członków naszego zespołu wykonał całą aplikację na iPada w około 24 godziny, używając jej.

I tak, aby faktycznie przesłać do Apple, musisz mieć Maca, ale jeśli nie jest to Twoja podstawowa platforma robocza, możesz iść tanio.

Robot Woods
źródło
3

Cappuccino lub PhoneGap .

Czasami jednak próba znalezienia skrótu nie oszczędza czasu ani nie daje porównywalnego produktu końcowego.

SK9
źródło
3

Jeśli kiedykolwiek korzystałeś z LUA, możesz wypróbować Corona SDK, który może tworzyć aplikacje działające na IOS i Androidzie

https://coronalabs.com/

Pobrałem go i trochę pokręciłem, uważam, że LUA jest bardzo łatwym do nauczenia językiem skryptowym bez typowych kłopotów / ograniczeń języka skryptowego ....

Jeff
źródło
2

Jest też BatteryTech, z którego korzystamy przez ostatnie 18 miesięcy i wydaliśmy z niego kilka gier. http://www.batterypoweredgames.com/batterytech

Cała obsługa C ++, Androida i iOS, wszyscy użytkownicy otrzymują pełne źródło. Nowa wersja 2 zawiera wiązania Lua.

Obrabować
źródło
3
Od 30.05.12: 200 USD za licencję dla 5 lub mniej programistów. 800 USD za więcej niż 5 lat. Nie można użyć do projektów typu open source.
Roger Dahl