Entwicklung einer plattformübergreifenden mobilen Anwendung [geschlossen]

109

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

sohilv
quelle
1
Während ich einen interessanten Thread gefunden habe, der mit diesem verwandt ist, stackoverflow.com/questions/3326110/…
sohilv
Ein weiterer guter Beitrag über plattformübergreifende Entwickler
sohilv
1
Gewählt, um dies als Duplikat zu schließen. Dies ist zu wichtig, um es auf zwei Fragen aufzuteilen. stackoverflow.com/questions/51988/…
ripper234
1
Ich habe kürzlich über diese stronia.com/2014/05/building-cross-platform-mobile-apps.html
Anshu Dwibhashi

Antworten:

97

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.

TechZen
quelle
52
Weniger (unnötige) Arbeit für die Entwickler bedeutet schnellere Aktualisierungszyklen, schnellere neue Funktionen, schnellere Bugfixes und so weiter. Mit der gleichen Arbeitskraft kann mehr erreicht werden. Ich betrachte dies als einen Vorteil für den Endbenutzer.
schoetbi
10
Theoretisch mag eine schnellere Entwicklung für den Endbenutzer besser sein, aber das ist nicht die philosophische Grundlage für die meisten plattformübergreifenden APIs. Ich habe viele Versuche gesehen, solche Tools in vielen Umgebungen einzusetzen, und der Fokus liegt immer darauf, das Leben des Entwicklers auf Kosten der Qualität des Endprodukts zu erleichtern. Darüber hinaus schwindet das Versprechen von schneller und billiger selten. Es scheint immer irgendwo eine Show zu geben, die die meiste Zeit spart.
TechZen
5
Beachten Sie Folgendes, um meinen Standpunkt klar zu machen: Es gibt plattformübergreifende APIs für viele verschiedene Hardware- und Betriebssystemklassen. Wie viele plattformübergreifende Apps nutzen Sie persönlich regelmäßig? Wie viele plattformübergreifende Apps haben Sie jemals verwendet, an die Sie gut gedacht haben? Die Leute haben plattformübergreifende APIs vorangetrieben, seit es mehr als eine Plattform gab, aber sie haben nirgendwo wirklich Erfolg gehabt. Sie sind nicht erfolgreich, weil sie nicht die nützlichsten Apps für die Endbenutzer produzieren.
TechZen
4
@TechZen - Ich verwende StackOverflow jetzt in meinem Webbrowser und sehe keinen Grund, nach einem nativen Client zu suchen. Ich denke, Sie verallgemeinern Ihre Behauptungen.
Youval Bronicki
4
Ich bin ziemlich verärgert darüber, dass diese Art der subjektiven philosophischen Debatte auf einer technischen Website die richtige Note erhält. Was noch schlimmer ist, die These dieses Beitrags ist für die meisten wichtigen Software, die wir heute verwenden, ungültig: Webbrowser sind plattformübergreifend; Photoshop, MS Office, Dropbox und andere Dinge sind plattformübergreifend. Öffnen Sie einfach Ihr Startmenü oder Ihren Finder und listen Sie die plattformspezifischen Typen auf. Am wahrscheinlichsten ist es, kleine Utility-Ware zu finden. Ihr Argument wäre gültig, wenn Sie glauben, dass Mobiltelefone radikal anders sind (eine sehr gültige Annahme), aber es scheint keine Argumente zu geben, um diese Grundlage zu schaffen.
Kizzx2
14

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:

  • Windows Phone 7 erlaubt keine native Codeentwicklung (möglicherweise in weiteren Updates).
  • AFAIK mono like project gibt es (noch?) Nicht für alle Plattformen bada, webOS, maemo usw.

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 .

Jla
quelle
6

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.)

Seand
quelle
5

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

WAC beabsichtigt, seine ersten Spezifikationen und Komponenten seines SDK im November für Entwickler zu veröffentlichen. Diese Spezifikation basiert auf W3C-Standards und schafft eine starke Plattform für die Entwicklung umfangreicher mobiler Webanwendungen. WAC bietet auch Abwärtskompatibilität für Geräte basierend auf den aktuellen JIL- und BONDI-Spezifikationen. ( http://www.convergedigest.com/Bandwidth/newnetworksarticle.asp?ID=31021 )

.

Es ist eine internationale Koalition von rund 25 Telekommunikationsunternehmen, die darauf abzielt, eine Plattform zu schaffen, die allen Entwicklern offen steht und an alle Mobiltelefonbenutzer verkauft wird. ( http://www.downloadsquad.com/2010/02/15/atandt-wholesale-applications-community-is-a-platform-not-an-app/ )

Mathias Conradt
quelle
1

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.

Fozi
quelle
Eigentlich gibt es kein Java auf dem iPhone, und soweit ich weiß, läuft Java mir nicht auf Android
Alaa Nassef
Android-Entwicklung ist massiv Java. developer.android.com/reference/java/net/package-summary.html
Nick Garvey
Ich kenne die Details nicht, aber mit Avian JVM kann Java auf iOS-Geräten ausgeführt werden.
Quazi Irfan