Immer mehr mobile Plattformen werden gestartet und SDKs stehen Entwicklern zur Verfügung. Es stehen verschiedene mobile Plattformen zur Verfügung: Android, iOS, Moblin, Windows Mobile 7, RIM, Symbian, Bada, Maemo usw.
Die Erstellung plattformübergreifender Anwendungen bereitet Entwicklern Kopfzerbrechen. Ich suche nach gemeinsamen Dingen auf allen Plattformen, die Entwicklern helfen, die Anwendungen auf alle Plattformen portieren möchten. Wie sind die Diff-Bildschirmauflösungen, Eingabemethoden, Open-Gl-Unterstützung usw. Bitte teilen Sie Details mit, die Sie für jede Plattform kennen.
Oder gibt es Möglichkeiten, indem Sie Code in HTML (Widget-Typ) schreiben und in eine native Anwendung laden. Ich kenne den Android, in dem wir die Webansicht durch Aufrufen zur Anwendung hinzufügen könnensetContentView(view)
Bitte teilen Sie die Klassendetails mit, in denen wir die HTML-Ansicht in die native Anwendung verschiedener Arten von Plattformen einfügen können, die Sie kennen.
Zweck dieses Threads ist es, gemeinsame Details zwischen Entwicklern auszutauschen. Markierung als Community-Wiki.
Plattformübergreifende Tools und Bibliothek
XMLVM, Codename One und iSpectrum (Java-Code aus einer Android-App kompilieren oder von Grund auf neu erstellen
Phone Gap (plattformübergreifende mobile Apps)
Titan (um native mobile und Desktop-Apps mit Webtechnologien zu erstellen)
Mono Touch (C # für iPhone)
rhomobile - http://rhomobile.com/ Beispiele finden Sie hier: http://github.com/rhomobile/rhodes-system-api-samples
Sencha Touch - Sencha Touch ist ein HTML5-Framework für mobile Apps, mit dem Sie Web-Apps entwickeln können, die auf Apple iOS- und Google Android-Touchscreen-Geräten nativ aussehen und sich nativ anfühlen. http://www.sencha.com/products/touch/
Corona - Plattformübergreifende Bibliothek für Iphone / Ipad / Android-Anwendungen. Zu großartig. http://anscamobile.com/corona/
Eine Anleitung zum Portieren vorhandener Android-Apps auf Windows Phone 7 http://windowsphone.interoperabilitybridges.com/articles/windows-phone-7-guide-for-iphone-application-developers
- Jquery Mobile Touch-optimiertes Web Framework für Smartphones und Tablets
Antworten:
Meine Antwort hier behandelt einige der technischen Einschränkungen plattformübergreifender Tools, aber lassen Sie mich ein wenig erweitern:
Ich denke, dass plattformübergreifende Tools in der Vergangenheit immer auch Rans waren, weil solche Tools den falschen philosophischen Fokus haben.
Alle Verkaufsargumente für plattformübergreifende Tools sind die Vorteile, die sie Entwicklern bringen . Sie werden mit der Idee verkauft, dass sie es den Entwicklern ermöglichen, einmal überall zu schreiben. Sie werden mit der Idee verkauft, dass sie es den Entwicklern ermöglichen, ihren Markt zu erweitern, ohne neue APIs zu erlernen. Sie werden mit der Idee verkauft, dass sie es den Entwicklern ermöglichen , Kosten und Markteinführungszeit zu senken.
Was für plaformübergreifende Tools NICHT verkauft werden, ist der Nutzen, den sie den Endbenutzern bringen .
Der Nutzen für den Endbenutzer ist kein Verkaufsargument, da die plattformübergreifende Entwicklung für den Endbenutzer selten ein Vorteil ist. Dem Endbenutzer ist es egal, wie hart der Entwickler arbeiten musste, um das Produkt auf den Markt zu bringen. Es ist ihnen auch egal, auf wie vielen Plattformen die App ausgeführt werden kann, wenn sie nur eine Plattform verwenden. Sie kümmern sich nur darum, ob die App auf der Hardware, auf der sie ausgeführt werden soll, das tut, was sie benötigt. Die Tatsache, dass sie die App nicht auf vielen verschiedenen Plattformen ausführen müssen, bringt ihnen keinen Wert.
Umgekehrt bedeuten die unvermeidlichen Kompromisse bei der Erstellung einer plattformübergreifenden API, dass alle von der API erstellten Apps auf jeder Plattform bestenfalls B-Klasse sind. Sie werden niemals das beste Werkzeug für jede Plattform sein.
All dies bedeutet, dass plattformübergreifende Tools dem Endbenutzer in den meisten Anwendungsfällen ein schlechteres Produkt bieten als plattformspezifische APIs. Der Endbenutzer hat immer eine bessere Wahl.
Sie verdienen langfristig Geld, indem Sie den Endbenutzern die nützlichsten Tools zur Verfügung stellen. Wenn Sie sich nicht philosophisch darauf konzentrieren, das Leben des Endbenutzers einfacher und produktiver zu gestalten, sind Sie von Anfang an zum Scheitern verurteilt. Endbenutzer haben viele Möglichkeiten und wenn Ihr Tool nicht zu den besten gehört, werden Sie es nicht auf dem Markt schaffen.
Sie sollten plattformübergreifende Tools nur verwenden, wenn Sie der Meinung sind, dass "die Benutzer wirklich davon profitieren, wenn sie diese App auf vielen verschiedenen Plattformen ausführen". Wenn Sie sich zunächst mit plattformübergreifenden Tools befassen, nur weil sie Ihnen (den Entwicklern) das Leben erleichtern, haben Sie sie aus dem falschen Grund ausgewählt und sie werden Sie mehr verletzen als helfen.
quelle
Es gibt verschiedene Ansätze für die plattformübergreifende Entwicklung auf Mobilgeräten. Natürlich haben sie alle Einschränkungen. Keine Lösung schafft es, alle Funktionen des Geräts so zu nutzen, wie es eine native Anwendung kann.
Code wiederverwenden
Obwohl nicht alle mobilen Betriebssysteme dieselbe Entwicklungssprache und API verwenden, können Sie manchmal einige Klassen oder Logikschichten gemeinsam nutzen.
C ++ zum Beispiel kann wahrscheinlich für eine iOS-Anwendung , für eine Android-App unter Verwendung des NDK , für eine Symbian-App wiederverwendet werden , da sie in C ++ usw. entwickelt wurden.
Einige Lösungen bieten auch die Möglichkeit, die App in einer anderen Sprache als der normalerweise vom Gerät verwendeten zu schreiben. Die bekanntesten (tatsächlich die einzigen, die ich kenne) sind kommerziell und basieren auf dem Mono-Projekt (C # -Entwicklung):
Ich bin mir jedoch nicht sicher, ob wir diese plattformübergreifende Entwicklung wirklich nennen können, da die Wiederverwendung von Code je nach Gerät begrenzt ist:
Der UI-Teil bleibt auch für jedes Gerät spezifisch.
Web Entwicklung
Eine regelmäßige Antwort auf die Frage nach der plattformübergreifenden Entwicklung für Mobiltelefone ist die Webentwicklung. Wir würden dann einen Wrapper benötigen, der den mobilen Browser verwendet, damit er wie eine native Anwendung aussieht und sich verhält. Auf diese Weise wird ein Teil des plattformübergreifenden Frameworks, das wir weiter unten sehen werden, funktionieren.
Der Aufstieg von HTML5 bringt Funktionen für die Webentwicklung mit sich, die nur mit einer nativen Anwendung wie Geolocation, Offline-Anwendung und lokalem Speicher möglich sind.
Wir können immer mehr Frameworks finden, um Webanwendungen für Handys mit einem nativen Erscheinungsbild zu entwickeln, indem wir die neuesten Webstandards HTML5, CSS3, Js nutzen:
HTML5 ist jedoch noch sehr jung und die Implementierung kann von Browser zu Browser unterschiedlich sein. Die meisten mobilen Standardbrowser verwenden die WebKit-Engine (Hauptausnahme ist Windows Mobile / Telefon mit Internet Explorer) und unterstützen dennoch nicht unbedingt dieselben Funktionen . Die Arbeit mit der lokalen Datenbank ist immer noch umständlich und wir können nicht sicher sein, wie sie von den verschiedenen Browsern implementiert wird. Darüber hinaus ist die Webentwicklung selbst mit HTML5 im Vergleich zu einer nativen App immer noch sehr eingeschränkt. Sie können nicht auf Kontakte, Kamera, Beschleunigungsmesser usw. zugreifen.
Bearbeiten: Anfang dieses Monats hat das W3C einige Warnungen über die Entwicklung von HTML5: Artikel aus ZDNet geliefert
Es ist also nur für eine begrenzte Kategorie von Anwendungen geeignet.
Plattformübergreifende Frameworks
Und dann haben wir die plattformübergreifenden Frameworks für mobile Anwendungen. Mit denen können Sie vermutlich einmal entwickeln und auf verschiedenen Plattformen bereitstellen. Diese Lösungen konzentrieren sich normalerweise auf iOS und Android und basieren auf der WebKit-Engine. Sie bieten mehr Interaktion mit den Telefonfunktionen und entwickeln gleichzeitig mit Webtechnologien. Die bekanntesten sind Nitobi PhoneGap, RhoMobile Rhodes und Appcelerator Titanium. Aber viele andere sind da draußen und verwenden nicht alle dieselbe Technik wie MoSync, mit der Sie Ihren Code in eine eigene Zwischensprache übersetzen, bevor Sie ihn für die gewünschte Plattform kompilieren.
[1]
Beachten Sie, dass Apple eine spezielle Richtlinie für Apps hat, die für seine Plattform geschrieben wurden. Sie scheinen diese Apps zu diesem Zeitpunkt nicht zu blockieren, aber es ist eine Information, die berücksichtigt werden sollte.Bearbeiten: Apple hat diese Richtlinie seit dem 9. September geändert .quelle
Bei der Bereitstellung als Webanwendung (HTML5, wie oben erwähnt) gibt es einige Gemeinsamkeiten. Bei umfangreichen nativen Apps sind die APIs für die verschiedenen Smartphones jedoch völlig unterschiedlich.
HTML5 kann die Dinge etwas verbessern, aber um interessante Dinge zu tun, müssen Sie nativ werden.
Es gibt plattformübergreifende Smartphone-Frameworks wie Phonegap, aber ich habe meistens schlechte Dinge über die Verwendung für "echte" Arbeit gehört. (viel Aufwand usw.)
quelle
Ja, HTML5 bekommt etwas Aufmerksamkeit. Sie sollten sich auch dieses Konsortium und diese Plattform ansehen, die im vierten Quartal erscheinen werden. Ich bin mir nicht sicher über den Erfolg dieses Projekts, da es sich nach einer großen Herausforderung anhört, aber hier sind die Details:
Website: http://www.wholesaleappcommunity.com/default.aspx
Nachrichten: http://news.google.de/news/search?aq=f&pz=1&cf=all&ned=us&hl=de&q=%22Wholesale+Applications+Community%22
.
quelle
Soweit ich weiß, können die meisten dieser Geräte Folgendes ausführen:
Java ME - die allgegenwärtigste Anwendungsplattform für mobile Geräte
Ich denke, dies kann sowohl als gutes als auch als schlechtes Beispiel dienen.
quelle