Mobile App iOS und Android?

Hallo.

Welche Möglichkeit ist am Besten eine Mobile App mit Java zu schreiben sodass sie auf Android und iOS handys stabil läuft?
Im Internet findet man z.B dazu:

  • Cross-Platform mobile development also Libraries die angeboten werden um es auf mehreren Geräten verfügbar zu machen (von einer Code-Base)
  • Source code porting: android code der zu Objective C übersetzt wird

Welche dieser Arten soll man nun vorziehen bzw. was sind hier die Vorteile/Nachteile?
Ich möchte mein Projekt gerne nach dem Prinzip “Write once, run anywhere” erstellen außerdem sollten die Lizenzen kostenlos sein.

Vielleicht hat ja jemand hier Erfahrung im Mobile Development und kann mir einige Tipps dazu geben.

Ich würde nicht versuchen eine Android App auf einem iOS Gerät zum Laufen zu bringen. Ich kann mir nicht vorstellen, dass man da vernünftige Resultate erzielt.

Wenn du für mehrere Plattformen entwickeln willst, dann würde ich dir zu PhoneGap/Cordova raten. Da schreibst du die App dann in HTML, Javascript und CSS.
Über das PhoneGap Framework hast du fast den selben Zugriff aufs Gerät wie eine native App (Kamera, Kontakte, Geolocation, …).
Am Ende generiert PhoneGap dir dann für jede gewünschte Plattform ein distributable, z.b. eine APK für Android.

Ich habe mal mit Titanium gearbeitet. Ist vom Prinzip her das gleiche wie Phonegap. Ich habe es nicht besonders gemocht, da ich mit zunehmender Komplexität der App schnell den Überblick verloren habe. Außerdem lief sie auf Android nicht wirklich flüssig. Allerdings kann das auch daran liegen, dass ich nicht besonders viel Erfahrung mit HTML, CSS und JS habe.
Wunderlist nutzt auch Titanium. Ansonsten kenne ich aber keine nicht-native App die wirklich erfolgreich ist.

Da hast du Recht, das hätte ich noch erwähnen sollen.
So eine Multiplattform App mit bspw. PhoneGap kommt natürlich nicht an eine native App ran. Es ist und bleibt nur eine „Website“.
Ich persönlich würde immer auf eine native App zurückgreifen.

Danke für die Info, das wusste ich bisher noch nicht. Aber es erklärt warum sich die App so komisch anfühlt :wink:

Hat schon jemand Erfahrungen mit LibGDX gemacht? Die versprechen auf ihrer Webseite das die Anwendung “sehr schnell” läuft…

Ich hab mir vor einiger Zeit mal CodenameOne angeguckt. Damit kann man aus reinem JavaCode für alle Geräte das benötigte erzeugen lassen. (Auf deren Build-Server) allerdings hab ich damit nicht viele erfahrungen gemacht und z.B. das builden für WindowsPhone hat damals nicht geklappt aufgrund der Server. Allerdings gabs ein schönes Plugin für NetBeans mit Emulator und anderem schnick schnack.

Nein, die haben beide ein völlig anderes Prinzip. Phonegap ist nur ein Container mit einer WebView in der eine HTML/JS-App läuft. Titanium kompiliert das ganze in eine echte, native App.

Ist ein OpenGPL-Aufsatz. Funktioniert, aber echtes Code-Sharing zwischen einer Android- und einer iOS-App erhältst du nur in dem du C-Modul schreibst und dann kompilierst.

Das schaut ja richtig vielversprechend aus oO
Edit:
Doch nicht. Basiert auch auf einem Server der dann die App auf’s Gerät pushed.

Nicht direkt. Jedenfalls früher nicht. Da konnte mans so machen (übers Plugin hab ichs gemacht) und nem kostenlosen Account das du den code schickst. Der Server das builded und dann konnte man z.B. bei Android die apk runterladen

Edit:
Hab eben nochmal geschaut und hab jetzt nichts anderes gefunden (ein altes Build für Windows Phone ist auch geglückt und könnte die .xap Datei runterladen. Mit nem gratis account kann man 100 Builds pro Monat machen wie ichs verstanden hab.
Für Firmen könnte man auch scheinbar den Buildserver kaufen/bei sich einrichten aber habs nicht genau durchgelesen

Thx, dann hab’ ich das falsch verstanden. Aber das „Fremd-Builden“ find’ ich schon sehr gewöhnungsbedürftig…

Joar wie gesagt jenach Serverlast kanns auch lange dauern bis gar nicht klappen^^ Aber wundert mich, dass das scheinbar nicht so bekannt ist

Multiplattform finde ich immer schwierig. Ich würde mich entweder bewusst entscheiden, für jede Plattform eine App zu entwickeln oder meine Seite mit CSS vernünftig zu stylen, z.B. mit http://blog.getbootstrap.com/2014/02/25/ratchet-2/

Beispiele findest Du z.B. hier: http://goratchet.com/components/

Vor derselben Frage stehe ich auch, wie kann ich eine JAVA-Anwendung (mit Quelltext) auf einem Android-Handy zum Laufen bringen? (Einfacher[, zuverlässiger] Weg bitte)

Folgende Schritte musst du durchgehen:

  1. Funktionalität in ein Modul auslagern das ohne Remoting und nur mit JavaSE also ohne JavaEE auskommt.
  2. GUI/App-Gerüst komplett neu schreiben und Modul verwenden.

Anders geht’s nicht, da du den UI-Code sowieso komplett schmeißen musst und Android blöderweise UI-Code und Lifecycle-Code zusammengewürfelt hat. (Activity, Fragment ↔ Lifecycle-Callbacks)

Also Java Anwendung auf IOS kannst du vergessen :wink:
wenn du zuverlässig eine App schreiben willst und die soll möglichst auf allen Systemen laufen, dann hast du nur 2 Möglichkeiten, HTML oder Xamarin
HTML geht für einfache Anwendungen aber wenn sie komplexer werden kommst du schnell an die Grenzen und du musst dich mit vielen Browsern rumschlagen
Xamarin ist eine super Lösung, ich hab sie bisher für Windows (Phone) und Android benutzt und das lief echt gut. IOS hab ich noch keine Zeit gehabt

Titanium geht auch gut.

@schlingel , das wie auch Phonegap und die anderen Frameworks fallen für mich unter HTML, du entwickelst ja mit den ganzen HTML Techniken und hast nen Container in dem du dich bewegst

Na eben nicht. Ich hab’s oben eh schon erwähnt. Bei Titanium wird in eine native App kompiliert. Als Aufsatz gibt’s zb. iOS, Android und Windows Phone.

Ich war als Admin dabei bei einem Projekt das damit umgesetzt worden ist und war sehr überrascht wie gut das funktioniert.

für mich las sich das gerade wie die Üblichen “Du entwickelst JS/HTML” hast deinen nativen Container in dem du dich bewegst und den du auch leicht modifizieren kannst

Ich kann jedem nur empfehlen sich mal Xamarin anzusehen, bis auf die UI kann man alles wieder verwenden, du bist (fast) komplett nativ unterwegs. Unter Android wird mit Monodroid gearbeitet (Mono Port für Android) und unter iOS wirds direkt in nativen Code umgewandelt. Seit Version 3.0 gibt es auch eigenes UI Framwork was sich auf die Systeme anpasst, aber das hab ich noch nicht ausprobiert, ich denke auch dass es relativ simpel gehalten ist.

Ja, keinen Plan warum sie das nicht besser auf ihre Website darstellen. Da die Leute ständig verwirrt sind was die Frage angeht, gibt’s sogar Stackoverflow-Posts dazu.