Porównanie Corona, Phonegap, Titanium

Jestem web developerem i chcę przenieść moje produkty internetowe na iPhone ' a. Jednym z produktów jest Google Maps: Pokaż mapę na ekranie telefonu możesz przeciągnąć lub zmienić rozmiar mapy i wyświetlić niektóre informacje, które dodajemy do mapy.

Wiem, że istnieją pewne technologie, które umożliwiają korzystanie z HTML, CSS i Javascript do tworzenia natywnych aplikacji na iPhone ' a. Zidentyfikowałem kilka:

Czy są inne, podobne produkty? Jakie są między nimi różnice? Co wybrać?

Author: Community, 2009-09-27

14 answers

Zarejestrowałem się w stackoverflow tylko w celu komentowania najczęściej głosowanej odpowiedzi na górze. Złe jest to, że stackoverflow nie pozwala nowym członkom publikować komentarzy. Więc muszę sprawić, aby ten komentarz bardziej wyglądał jak odpowiedź.

Odpowiedź Rory ' ego Blytha zawiera kilka ważnych punktów na temat dwóch mobilnych frameworków javascript. Jego kluczowe punkty są jednak błędne. Prawda jest taka, że Titanium I PhoneGap są bardziej podobne niż różne. Obie odsłaniają funkcje telefonu komórkowego poprzez zestaw interfejsów API javascript, a logika aplikacji (html, css, javascript) działa wewnątrz natywnej kontroli WebView.

  1. PhoneGap to nie tylko natywne opakowanie aplikacji internetowej. Za pośrednictwem API PhoneGap javascript "aplikacja internetowa" ma dostęp do funkcji telefonu komórkowego, takich jak geolokalizacja, Kamera Akcelerometr, kontakty, Baza Danych, system plików itp. Zasadniczo każda funkcja dostarczana przez zestaw SDK telefonu komórkowego może być "pomostowa" ze światem javascript. Z drugiej strony, a normalna aplikacja internetowa, która działa w mobilnej przeglądarce internetowej, nie ma dostępu do większości z tych funkcji(bezpieczeństwo jest głównym powodem). Dlatego aplikacja PhoneGap jest bardziej aplikacją mobilną niż aplikacją internetową. Z pewnością możesz użyć PhoneGap do owinięcia aplikacji internetowej, która w ogóle nie używa żadnych interfejsów API PhoneGap, ale nie do tego został stworzony PhoneGap.

  2. Titanium nie kompiluje kodu html, css lub javascript do "natywnych bitów". Są pakowane jako zasoby do pakietu wykonywalnego, podobnie jak osadzony plik obrazu. Po uruchomieniu aplikacji zasoby te są ładowane do kontrolki UIWebView i tam uruchamiane (oczywiście jako javascript, nie natywne bity). Nie ma czegoś takiego jak kompilator javascript-to-native-code (lub-objective-c). Tak samo dzieje się również w PhoneGap. Z architektonicznego punktu widzenia te dwie ramy są bardzo podobne.

Czy są inne? Tak. Po pierwsze, Titanium wydaje się być bardziej bogate w funkcje niż PhoneGap przez połączenie większej liczby funkcji telefonu komórkowego z javascript. Co najbardziej zauważalne, PhoneGap nie udostępnia wielu (jeśli w ogóle) natywnych komponentów interfejsu javascript. Titanium, z drugiej strony, ma kompleksowe interfejsy API, które można wywołać w javascript, aby tworzyć i kontrolować wszystkie rodzaje natywnych formantów interfejsu użytkownika. Korzystając z tych interfejsów API, aplikacja Titanium może wyglądać bardziej "natywnie" niż aplikacja PhoneGap. Po drugie, PhoneGap obsługuje więcej platform telefonów komórkowych niż Titanium. Interfejsy API PhoneGap są bardziej ogólne i mogą być używane na różne platformy, takie jak iPhone, Android, Blackberry, Symbian itp. Titanium jest skierowany przede wszystkim iPhone i Android przynajmniej na razie. Niektóre z jego interfejsów API są specyficzne dla platformy (jak API interfejsu użytkownika iPhone ' a). Korzystanie z tych interfejsów API zmniejszy możliwości aplikacji na wielu platformach.

Tak więc, jeśli Twoja troska o swoją aplikację jest, aby uczynić ją bardziej "natywny" wygląd, Titanium jest lepszym wyborem. Jeśli chcesz mieć możliwość łatwiejszego "portowania" aplikacji na inną platformę, PhoneGap będzie lepiej.

Zaktualizowano 13/08/2010: Link do odpowiedzi pracownika Titanium na pytanie Mickeya.

Zaktualizowano 12/04/2010: Postanowiłem dać temu postowi coroczny przegląd, aby jego informacje były aktualne. Wiele rzeczy zmieniło się w ciągu roku, które sprawiły, że niektóre informacje w początkowym poście były nieaktualne.

Największą zmianą był Tytan. Na początku tego roku Appcelerator wydał Titanium 1.0, który drastycznie odbiegał od poprzedniego wersje z architektonicznego punktu widzenia. W wersji 1.0 kontrolka UIWebView nie jest już używana. Zamiast tego wywołujesz Titanium API dla dowolnych funkcji interfejsu użytkownika. Ta zmiana oznacza kilka rzeczy:

  1. Interfejs aplikacji staje się całkowicie natywny. Nie ma więcej Web UI w aplikacji, ponieważ natywne API Titanium przejąć kontrolę nad wszystkimi potrzebami UI. Titanium zasługuje na wiele uznania dzięki pionierstwu na granicy "natywnego interfejsu użytkownika między platformami". Daje programistom, którzy preferują wygląd i natywny interfejs użytkownika, ale nie lubi oficjalnego języka programowania alternatywą.

  2. Nie będziesz mógł używać HTML lub CSS w swojej aplikacji, ponieważ Widok internetowy zniknie. (Uwaga: nadal można utworzyć widok sieci Web w Titanium. Ale istnieje kilka funkcji tytanu, które można wykorzystać w widoku sieci.) Titanium Q & A: co się stało z HTML & CSS?

  3. Nie będzie można używać popularnych bibliotek JS, takich jak JQuery, które zakładają istnienie obiektu DOM. Kontynuuj użyj JavaScript jako języka kodowania. Ale jest to prawie jedyna technologia internetowa, którą możesz wykorzystać, jeśli przyjdziesz do Titanium 1.0 jako programista internetowy.

Titanium video: Co nowego w Titanium 1.0.

Czy Titanium 1.0 kompiluje JavaScript do "natywnych bitów"? Nie. Appcelerator w końcu wyjaśnił ten problem z tym blogu dewelopera: Titanium Guides Project: js Environment.[22]} my programiści jesteśmy bardziej prawdziwymi ludźmi niż ci w Dział marketingu, prawda? :-)

Przejdź do PhoneGap. Nie ma zbyt wielu nowych rzeczy do powiedzenia na temat PhoneGap. Moim zdaniem rozwój PhoneGap nie był zbyt aktywny, dopóki IBM nie wskoczył na pokład pod koniec tego roku. Niektórzy twierdzili nawet, że IBM wnosi więcej kodu do PhoneGap niż Nitobi. To prawda, czy nie, dobrze jest wiedzieć, że PhoneGap jest aktywny rozwijany.

PhoneGap nadal opiera się na technologiach internetowych, a mianowicie HTML, CSS i JavaScript. Wygląda na to, że PhoneGap nie ma żadnego planu łączenia natywnych funkcji interfejsu użytkownika z JavaScript, tak jak robi to Titanium. Podczas gdy interfejs sieciowy nadal pozostaje w tyle za natywnym interfejsem pod względem wydajności i natywnego wyglądu, taka luka jest szybko zamykana. Istnieją dwa trendy w technologiach internetowych, które zapewniają jasną funkcjonalność mobilnego interfejsu WWW pod względem wydajności:

  1. Silnik JavaScript przechodzący z interpretera na maszynę wirtualną. JavaScript jest JIT skompilowany do kodu natywnego dla szybszego egzekucja. [[61]] Safari js engine: SquirrelFish Extreme

  2. Renderowanie stron internetowych przejście od polegania na CPU do korzystania z akceleracji GPU. Intensywne zadania graficzne, takie jak przejście strony i animacja 3D, stają się znacznie płynniejsze dzięki akceleracji sprzętowej. przyspieszanie kompozycji GPU w Chrome

Takie ulepszenia pochodzące z przeglądarek desktopowych są szybko dostarczane do przeglądarek mobilnych. W rzeczywistości, od iOS 3.2 i Android 2.0, mobilna kontrola widoku sieci Web stała się znacznie bardziej wydajna i przyjazna dla HTML5. Przyszłość mobilnej sieci jest tak obiecująca, że przyciągnęła duże dziecko do miasta: JQuery ogłosił niedawno swój mobilny framework internetowy. z jQuery Mobile dostarczającym gadżety UI i PhoneGap dostarczającym funkcje telefonu, ich dwa połączone tworzą idealną mobilną platformę internetową moim zdaniem.

Powinienem również wspomnieć Sencha Touch jako kolejny mobilny Framework gadżetowy interfejsu użytkownika. Sencha Touch w wersji 1.0 został niedawno wydany w ramach podwójnego modelu licencjonowania, który zawiera GPLv3. Sencha Touch działa dobrze z PhoneGap tak samo jak jQuery Mobile.

Jeśli jesteś programistą GWT (tak jak ja), możesz sprawdzić GWT Mobile, projekt open source do tworzenia mobilnych aplikacji internetowych z GWT. Zawiera wrapper PhoneGap GWT, który umożliwia korzystanie z PhoneGap w GWT.

 368
Author: DennisJZH,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-12 14:04:02

Z tego co zebrałem, oto kilka różnic między tymi dwoma:

  • PhoneGap zasadniczo generuje natywne wrappery dla wciąż istniejących aplikacji internetowych . Wypluwa Projekt bez względu na platformę, budujesz go i wdrażasz. Jeśli mówimy o iPhone (gdzie spędzam czas), nie wydaje się zbytnio różnić od tworzenia programu uruchamiającego aplikacje internetowe (skrót, który ma własną ikonę Springboard, więc możesz go uruchomić jak (Jak) natywna aplikacja). Na sama "aplikacja" to nadal html / js / etc. i działa wewnątrz hostowanej kontroli przeglądarki. Poza tym PhoneGap zapewnia most między JavaScript a natywnymi interfejsami API urządzeń. Tak więc piszesz JavaScript przeciwko interfejsom API PhoneGap, a PhoneGap wykonuje odpowiednie natywne połączenie. Pod tym względem, to jest różni się od wdrażania zwykłej starej aplikacji internetowej.

  • Titanium source zostaje skompilowane do rodzimych bitów. Czyli Twój html / js / etc. nie są po prostu dołączone do projektu a następnie hostowane wewnątrz kontroli przeglądarki internetowej - są przekształcane w natywne aplikacje. Oznacza to na przykład, że interfejs aplikacji będzie składał się z natywnych komponentów interfejsu użytkownika. Istnieją sposoby uzyskania natywnego wyglądu bez posiadania natywnej aplikacji, ale... cóż... co za koszmar, który zwykle okazuje się być.

Oba są podobne w tym, że piszesz wszystkie swoje rzeczy za pomocą typowych technologii internetowych (html / js / css / bla bla bla), i że masz dostęp do natywnych funkcjonalność poprzez niestandardowe interfejsy API JavaScript.

Ale znowu Aplikacje PhoneGap (PhonGapps? Nie wiem... to głupie imię? Łatwiej powiedzieć - tyle wiem) zaczynają swoje życie jako aplikacje internetowe, a kończą jako aplikacje internetowe. Na iPhone, Twój html / js / etc. jest po prostu wykonywane wewnątrz kontrolki UIWebView, a PhoneGap JavaScript API Twoje połączenia js są kierowane do natywnych API.

Titanium apps stają się natywnymi aplikacjami - są one tworzone przy użyciu technologii Web dev.

Co robi to naprawdę znaczy ?

  1. Aplikacja Titanium będzie wyglądać jak "prawdziwa" aplikacja, ponieważ ostatecznie jest "prawdziwa" aplikacja.

  2. Aplikacja PhoneGap będzie wyglądać jak aplikacja internetowa hostowana w przeglądarce, ponieważ ostatecznie jest to aplikacja internetowa hostowana w przeglądarce.

Który jest dla Ciebie odpowiedni?

  • Jeśli chcesz pisać natywne aplikacje używając umiejętności web dev, Titanium jest najlepszym zakład.

  • Jeśli chcesz napisać aplikację przy użyciu umiejętności web dev, które można realistycznie wdrożyć na wielu platformach (iPhone, Android, Blackberry i cokolwiek innego zdecydują się dołączyć), a jeśli chcesz uzyskać dostęp do podzbioru natywnych funkcji platformy (GPS, akcelerometr itp.) dzięki zunifikowanemu API JavaScript PhoneGap jest prawdopodobnie tym, czego chcesz.

Możesz zapytać: Dlaczego miałbym chcieć napisać PhoneGapp (zdecydowałem się użyć nazwy), a nie web aplikacja hostowana w sieci? Czy nadal nie mogę uzyskać dostępu do niektórych natywnych funkcji urządzenia w ten sposób, ale także mieć wygodę prawdziwego wdrażania sieci, zamiast zmuszać użytkownika do pobrania mojej "natywnej" aplikacji i zainstalowania jej?

Odpowiedź brzmi: ponieważ możesz przesłać swoją aplikację PhoneGapp do App Store i za nią zapłacić. Otrzymujesz również ikonę launchera, co utrudnia użytkownikowi zapomnienie o Twojej aplikacji (jestem znacznie bardziej skłonny zapomnieć o zakładce niż ikonie aplikacji).

You could z pewnością opłata za dostęp do hostowanej aplikacji internetowej, ale ile osób naprawdę przejdzie przez ten proces, aby to zrobić? W App Store wybieram aplikację, stukam przycisk "Kup", wprowadzam hasło i gotowe. Instaluje się. Kilka sekund później go używam. Gdybym musiał użyć czyjegoś jednorazowego mobilnego interfejsu transakcyjnego, co prawdopodobnie oznacza konieczność wybrania mojego imienia i nazwiska, adresu, numeru telefonu, numeru CC i innych rzeczy, których nie chcę stukać, prawie na pewno nie przeszedłbym przez z nim. Ponadto ufam Apple - jestem przekonany, że Steve Jobs nie będzie zapisywać moich informacji, a następnie pobierać kilka niegrzecznych subskrypcji czasopism do mojego CC dla kopnięć.

W każdym razie, poza faktem, że web dev Tech jest zaangażowany, PhoneGap i Titanium są bardzo różne - do tego stopnia, że są tylko powierzchownie porównywalne.

Nienawidzę aplikacji internetowych, przy okazji, a jeśli czytasz recenzje iTunes App Store, użytkownicy są całkiem dobrzy w ich zauważaniu. Nie podam żadnych nazwisk, ale mam kilka " aplikacji" na moim telefonie wyglądają i działają jak śmieci, a to dlatego, że są to aplikacje internetowe, które są hostowane wewnątrz instancji UIWebView. Gdybym chciał użyć aplikacji internetowej, otworzyłbym Safari i, No wiesz, nawigował do jednej. Kupiłem iPhone ' a, ponieważ chcę rzeczy, które są iPhone-y. nie mam problemu z użyciem, powiedzmy, snazzy Google web App wewnątrz Safari, ale czułbym się oszukany, jeśli Google po prostu zakradł zakładkę na Springboard, prezentując aplikację internetową jako natywną.

Muszę już iść. Moja dziewczyna to ma możesz-Proszę-przestać-używać-tego-komputera-na-trzy-sekundowy wyraz jej twarzy.

 193
Author: Rory Blyth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-04 03:49:06

Jestem na kursie rozwoju Androida / iPhone i spędziliśmy 8 tygodni z Titanium (nie na pełny etat) (wersja była Titanium 1.4.2 i czas był około listopada 2010). Oto moje doświadczenie.

IPhone Android dual targeting

Mimo że Przewodniki API twierdzą, że funkcjonalność jest dostępna zarówno dla Androida, jak i iPhone' a, tak nie jest. Wiele z tych rzeczy po prostu nie działa na jednej z platform. Niektóre rzeczy działają inaczej.

Wiele osób w Klasa wykonała aplikacje na iPhone ' a i nie mogą sprawić, że będą działać na Androidzie bez poważnych poprawek. Opracowałem prostą aplikację dla dzieci o nazwie Animap (patrz android market / Appstore w Szwecji) i zacząłem rozwijać pod Windows. Gdy Android target działał, otworzyłem projekt na OS X. Nie pokazuje żadnych rzeczy do budowania dla iPhone ' a, tylko dla Androida. Musisz uruchomić projekt dual target pod OS X. (ok, skopiowałem odpowiednie pliki do nowego projektu). Następny problem-animacje nie działa na iPhonie (działają na Androidzie). Zdarzenia przewijania nie działają tak samo na iPhonie. (tj. na Androidzie dostajesz Zdarzenie nietykalne, gdy użytkownik przestaje przewijać i zwalnia palec z ekranu, nie dzieje się to na iPhonie).

Ponieważ nie jest to gdzieś wspomniane, zasadniczo musisz wykonać programowanie prób i błędów na jednej platformie, a następnie na drugiej platformie. Metodą prób i błędów rozumiem, że uzyskanie tak prostej aplikacji jak Animap zajmie około dwóch dni pracuje na drugiej platformie. Będziesz również musiał mieć if (android) then... lub jeśli(iphone)... cały Twój kod...

Pobieranie i konfiguracja

Musisz postępować zgodnie z instrukcjami do listu. Nie próbuj używać java 64 bit. Nie skompiluje aplikacji demonstracyjnej KitchenSink 1.4.0. (1.3 Działa OK!) Musisz umieścić pliki bezpośrednio na dysku C, ponieważ długie nazwy ścieżek sprawią, że zewnętrzny program nie odbierze wszystkich parametrów wiersza poleceń, jeśli osiągną długość. (Grzywna dla małych programów choć) W 1/3 przypadków łańcuch narzędzi po prostu się zatrzymuje i musisz ponownie nacisnąć "Uruchom". Wtedy to prawdopodobnie zadziała... bardzo zawodne. Symulator nie zostanie znaleziony przy starcie, a następnie musisz po prostu zabić adb.exe z Ctrl + Alt + Delete i Ponów próbę.

Połączenie sieciowe

W Sieci wifi czasami tracisz połączenie na żywo i Titanium ulega awarii (interfejs kompilacji/wdrażania) Jeśli nie masz działającego połączenia z Internetem, nie uruchomi się, ponieważ nie może się zalogować jesteś na ich serwerach.

API

CSS, HTML i jQuery to pestka w porównaniu z tym. Titanium przypomina inne stare GUI API i musisz ustawić pewne właściwości dla każdego przycisku / pola / itp. Błędne pole jest po prostu łatwe, pamiętając wszystkie właściwości, które należy ustawić? Pisałeś to wielkimi literami we właściwym miejscu? (ponieważ nie jest to przechwytywane przez kompilator, ale będzie postrzegane jako błąd runtime, jeśli masz szczęście przetestować tę część)

In Titanium rzeczy po prostu złamać po dodaniu innego widoku na górze kontrolki lub kliknij gdzieś indziej w GUI.

Dokumentacja

Kilka stron API zawiera symbol Androida, ale zwróci wartość null tylko podczas próby utworzenia kontrolki. Nie są one po prostu dostępne na platformie Android pomimo symboli. Czasami Android jest wspomnieć, że nie obsługuje konkretnej metody, ale wtedy brakuje całego API.

KitchenSink

Aplikacja demo. Czy Ja wspomnieć, że nie kompiluje się, jeśli umieścisz go w folderze projektu Eclipse, ponieważ ścieżka jest zbyt długa? Musi być umieszczony na dysku C w folderze głównym. Obecnie używam symbolik link (mklink / J ...)

Metody nieudokumentowane

Prawdopodobnie musisz używać rzeczy jako etykiety.setText ('Hello World'), aby zmienić etykietę, ale nie jest to w ogóle udokumentowane.

Debugowanie

Titanium.API.info ('Wydruki są jedynym sposobem na debugowanie');

Edycja

API nie są dostępne w żadnym dobrym formacie, więc nie można uzyskać zwykłego uzupełniania kodu z pomocą itp. w zaćmieniu. Aptana proszę o pomoc!

Hardware

Wydaje się, że kompilator / narzędzia nie są wielowątkowe, więc szybki komputer z szybkim dyskiem twardym jest koniecznością, ponieważ musisz wykonać wiele prób i błędów. Wspomniałem o kiepskiej dokumentacji? Musisz wypróbować tam wszystko, ponieważ nie możesz mu ufać!

Pewne pozytywne rzeczy

  • Open Source
  • Z poprzednich projekty, które obiecałem sobie, że nigdy więcej nie użyję zamkniętego źródła, ponieważ nie można po prostu naprawić rzeczy, rzucając na to godziny i siłę roboczą. Ważne, gdy jesteś spóźniony w projekcie i musisz DOSTARCZYĆ w trudnym terminie. To jest open source i byłem w stanie zobaczyć, dlaczego łańcuch narzędzi pęka i faktycznie naprawić go również.

  • Bugdatabase

  • Jest też otwarta. Możesz po prostu zobaczyć, że nie jesteś sam i zrobić obejście zamiast kolejnych 4 godzin spędzonych na próba i błąd.

  • Społeczność

  • wydaje się być aktywny na swoich forach.

Błędy

  • Titanium 1.4 nie jest threadsafe . Oznacza to, że jeśli korzystasz z wątków (użyj właściwości url: w wywołaniu createWindow) i program taki jak wątki działa i wysyła zdarzenia z danymi tam iz powrotem, napotykasz wiele bardzo, bardzo dziwnych rzeczy - utracone programy obsługi, utracone okna, zbyt wiele zdarzeń, zbyt mało zdarzeń itp. itd. To wszystko zależy jeśli chodzi o czas, umieszczenie wierszy kodu w innej kolejności może spowodować awarię lub wyleczenie aplikacji. Dodawanie okna do innego pliku.js psuje Twoją aplikację.egzekucja js... To również traci wewnętrzne struktury danych w Titanium, ponieważ czasami mogą aktualizować wewnętrzne struktury danych w paralell, nadpisując właśnie zmienioną wartość czymś innym.

Wiele problemów, jakie miałem z Titanium, wynika z mojego doświadczenia w systemach czasu rzeczywistego, takich jak OSE, które obsługują setki wątków, zdarzeń i przekazuję wiadomość. To ma działać w Titanium 1.4, ale po prostu nie robi tego niezawodnie.

  • Javascript (który jest dla mnie nowy) umiera po cichu na błędy uruchomieniowe. Oznacza to również, że małe i powszechne błędy, takie jak błędne pisanie nazwy zmiennej lub czytanie w wskaźniku null, nie ulegają awarii, kiedy powinny, więc możesz ją debugować. Zamiast tego części twojego programu po prostu przestają działać, na przykład eventhandler, ponieważ zgubiłeś / pomyliłeś znak.

  • Wtedy mamy więcej prostych błędów w Titanium, takich jak niektóre parametry nie działające w funkcjach (co jest dość powszechne przynajmniej na platformie Android).

  • Prędkość cyklu debugowania metodą prób i błędów Po uruchomieniu Titnium Developer na kilku komputerach zauważyłem, że wąskim gardłem jest dysk twardy. Dysk SSD w laptopie sprawia, że cykl kompilacji jest około 3-5 razy szybszy niż w przypadku napędu 4200 rpm. Na pulpicie, posiadanie dwóch dysków w RAID 1 (tryb pasków) sprawia, że kompilacja jest o 25 procent szybsza niż na pojedynczym dysku z nieco szybszym procesorem, a także bije na laptopa z dyskiem SSD.

Podsumowanie

  • Z komentarzy w tym wątku wydaje się, że walka o liczbę platform narzędzie takie jak ten może dostarczyć aplikacji dla. Liczba API wydaje się być kluczowym punktem sprzedaży.

To świeci bardzo, gdy zaczniesz go używać. Jeśli spojrzysz na otwarty bugtracker, zobaczysz, że liczba błędów rośnie szybciej niż liczba naprawionych błędów. Jest to zwykle znak, że deweloperzy wciąż dodają więcej funkcjonalności, zamiast koncentrować się na zmniejszaniu liczby błędów.

Jako konsultant starający się dostarczać dość proste aplikacje do multiplatformów dla klienta - nie jestem pewien, czy jest to rzeczywiście szybsze niż robienie natywnych aplikacji na dwóch platformach. Wynika to z faktu, że kiedy jesteś na bieżąco, jesteś szybki z Tytanem, ale nagle patrzysz w dół i znajdujesz się w tak głębokiej dziurze nie wiesz, ile godzin trzeba poświęcić na obejście problemu. Po prostu nie można obiecać określonej funkcjonalności w określonym terminie / czasie/koszcie.

O sobie: używam Pythona od dwóch lat z wxPython. (ten GUI jest bezmyślny, ale nigdy nie pęka w ten sposób. To może być ja, który nie zrozumiał modelu gwintowania używany przez Javascript i Titanium, ale nie jestem sam według ich otwartych forach dyskusyjnych, obiekty GUI są nagle za pomocą niewłaściwego kontekstu/nie aktualizowanie..???) wcześniej mam doświadczenie w programowaniu C i ASM dla urządzeń mobilnych.

[edit-dodano część z błędami i nie jest bezpieczny wątek] [Edit - teraz pracuje z nim od miesiąca+, głównie na PC, ale niektóre na OS X, jak również. Dodano podwójne targetowanie iPhone ' a i Androida. Dodano szybkość cyklu debugowania metodą prób i błędów.]

 62
Author: user288299,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-11 12:54:24

Corona SDK (Ansca Mobile) używa Lua jako języka kodującego. Zobacz też lua.org więcej o Lua.

Podczas gdy planujemy dodać dalszą integrację internetową i elementy natywnego interfejsu użytkownika, skupiamy się raczej na aplikacjach intensywnie graficznych, takich jak tworzenie gier, w przeciwieństwie do technologii internetowych. Innymi słowy, nie wyobrażamy sobie ludzi piszących aplikacje w całości w Javascript / HTML / CSS.

 25
Author: Evan Kirchhoff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-11 23:30:33

Pracuję z Tytanem od ponad tygodnia i czuję, że mam dobre przeczucie co do jego słabości.

1) Jeśli masz nadzieję, że używasz tego samego kodu na wielu platformach powodzenia! Zobaczysz coś takiego jak backgroundGradient i będziesz zaskoczony, dopóki nie dowiesz się, że wersja Androida go nie obsługuje. Następnie trzeba powrócić do korzystania z gradientowego obrazu, równie dobrze może używać go dla obu wersji, aby Kod łatwiej prawda?

2) dużo dziwnych zachowań, na Titanium android sdk musisz zrozumieć, czym jest" ciężkie " okno, aby uruchomić przycisk Wstecz lub jeszcze lepiej śledzić zdarzenia orientacyjne. To nie jest jak Platforma android naprawdę jest, to jak Titanium stara się ich API pracy.

3) twój wrzucony w ciemności, rzeczy się rozwalą i musisz zacząć komentować kod, a gdy go znajdziesz, nigdy go nie używaj. Istnieją pewne oczywiste błędy, takie jak orientacja i procent na Androidzie, które stanowią problem od ponad sześciu miesięcy.

4) Robaki .... jest wiele błędów i będą one zgłaszane, siedzieć miesiącami, zostać naprawione w ciągu kilku dni. Jestem zaskoczony, że planują nawet wydać black berry mobile sdk, gdy jest tak wiele innych problemów z Androidem.

5) Titanium Iphone vs Titanium Android javascript silniki są zupełnie inne. W wersji na Androida możesz pobierać zdalne pliki javascript, dołączać i używać bibliotek, takich jak mootools, jquery i tak dalej. Byłem w niebie, kiedy to odkryłem. ponieważ nie musiałem kompilować aplikacji na Androida. Proces instalacji APK android trwa tak długo! Iphone nic z tego nie jest możliwe, również wersja iphone ma znacznie szybszy silnik javascript.

Jeśli trzymasz się z dala od wielu natywnych części interfejsu, tj. zamiast tego użyj setInterval do wykrywania zmian orientacji, trzymając się gradientowych obrazów, zapomnij o przycisku Wstecz, zbuduj własne animacje, zapomnij o nagłówku okna, paskach narzędzi i pulpicie nawigacyjnym. Naprawdę można zrobić api, które działa na obu nie wymaga dużo przepisywania. Ale w tym punkcie jest tak powolny jak webapp.

Czy warto? Po całym bólu, jest warta każdej minuty. Możesz abstrakcyjną logikę i po prostu zbudować inny interfejs użytkownika dla każdego, a następnie, jeśli jesteś wszędzie. Tytan pozwala na płynne aplikacje, które czują się szybko. Tracisz potężne możliwości układu każdej platformy, ale jeśli myślisz o prostocie, rzeczy można zrobić w jednym języku.

Dlaczego nie aplikacja internetowa? On rynek podstawowy telefony z Androidem strasznie wolno generuje Widok sieci Web i zużywa dużo pamięci, której można użyć do wykonania bardziej złożonej logiki.

 18
Author: Gorilla3D,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-22 21:51:46

Oto najnowsza i dogłębna analiza Appcelerator i PhoneGap: http://savagelook.com/blog/portfolio/a-deeper-look-at-appcelerator-and-phonegap

A tu jeszcze więcej szczegółów na temat tego, jak różnią się one programowo: http://savagelook.com/blog/portfolio/phonegap-is-web-based-appcelerator-is-pure-javascript

 10
Author: Tony Lukasavage,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-25 19:27:26

Natywny mapkit jest obsługiwany w Titanium

 9
Author: jhaynie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-01 05:52:35

Tworzenie widżetów HTML5 tha wyglądają jak widżety iphone ' a to jedno, ale robienie z nich równie dobrze to zupełnie inna sprawa. Wydajność animacji html5 (nawet proste przejścia widoku), przewijanie długich list, szybkość reakcji na gesty czują się lepkie i szarpane. Użytkownik iPhone ' a zauważy różnicę.

Istnieją również pewne różnice w rodzaju gestów, które są obsługiwane przez różne urządzenia, co skutkuje specyficznym kodem platformy i problemami z użytecznością.

Na razie zostanę przy natywnych aplikacjach.

 8
Author: user158678,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-17 03:11:56

Rhomobile Rhodes ( http://rhomobile.com/products/rhodes ) jest bardzo podobny w podejściu do PhoneGap, ale jest jedynym frameworkiem z:

  1. wzorzec kontrolera widoku modelu (jako większość frameworków internetowych dostarcza)
  2. Menedżer relacyjny obiektów
  3. wsparcie dla wszystkich popularnych smartfonów (w tym Windows Phone 7)
  4. hosted development service (nie tylko hosted build): http://rhohub.com
  5. pełny debugger i emulator bez SDK w RhoStudio IDE
  6. wsparcie dla zsynchronizowanych danych offline
 7
Author: Adam Blum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-10 21:29:05

Dla wszystkich zainteresowanych Tytanem muszę powiedzieć, że nie mają bardzo dobrej dokumentacji niektórych klas, właściwości, metod brakuje. Ale wiele jest "udokumentowane" w ich przykładowej aplikacji KitchenSink więc nie jest tak źle.

 6
Author: gyozo kudor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-07 08:35:48

Rozumiem, że PhoneGap dostarcza interfejsy API Javascript do większości interfejsów API iPhone ' a.

Titanium wydaje się łatwiejsze dla środowiska web developerów. Jest to prosty plik XML do utworzenia podstawowej aplikacji TabView, a następnie wszystko w obszarze zawartości jest kontrolowane przez HTML / JS. Wiem również, że Titanium zapewnia trochę javascript dostęp do niektórych frameworków (szczególnie dostęp do informacji o lokalizacji, ID Telefonu, itp.).

Aktualizacja: Titanium dodało Maps API w Wersja 0.8 ich frameworka.

 5
Author: Jackson Miller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-06 05:54:11

Powinieneś nauczyć się objective c i programować natywne aplikacje. Nie polegaj na tych rzeczach, które Twoim zdaniem ułatwią życie. Apple upewniło się, że najprostszym sposobem jest korzystanie z ich natywnych narzędzi i języka. Dla Twoich 100 linii javascript mogę zrobić to samo w 3 liniach kodu lub w ogóle kodu w zależności od elementu. Obejrzyj kilka samouczków-jeśli rozumiesz javascript to objective c nie jest trudne. Obejścia są nieszczęśliwe, a apple może wyciągnąć wtyczkę w dowolnym momencie.

 3
Author: TouchGameDev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-14 04:30:41

Z wymienionych rozwiązań, żadne z nich nie daje bezpośredniego dostępu do MapKit Framework wprowadzonego w OS 3.0.

Ponieważ widżety HTML Map Google nie są tak dobre jak MapKit (zobacz przykład Google Latitude), prawdopodobnie najlepiej jest opracować natywną aplikację Cocoa touch lub wybrać rozwiązanie, które można rozszerzyć, aby dodać integrację MapKit. PhoneGap jest rozszerzalny w ten sposób (jest open-source, więc jest domyślnie), a niektóre inne rozwiązania mogą bądź też.

edit: Titanium ma teraz wsparcie dla MapKit

 3
Author: rpetrich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-31 19:55:10

Próbowałem corona. Było dobre, dopóki nie odkryłem, że nie obsługuje strumieniowego przesyłania dźwięku mp3. Zatrzymałem się tam. Myślę, że jeśli naprawdę chcę być iphone app developer powinienem nauczyć Obj c. Wszystko chciałem zrobić aplikację, która ma listę stacji radiowych i kliknij na nich zacząć grać.

 1
Author: netmastan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-29 03:17:52