mobileApp welches framework

Firehold

Ensign
Registriert
Feb. 2016
Beiträge
170
Hallöle,

ich stehe vor der Herausforderung eine kleine App zu entwicklen, welche nachher erst auf einem iOS Tablet, danach aber auch auf android Geräten funktionieren soll.

Da ich nicht zwei neue Programmiersprachen lernen möchte (SWIFT & JAVA) Dachte ich anstatt einer nativen Lösung an eine hybridlösung. Da mein bisheriges Betätigungsfeld in PHP, Javascript, HTML & CSS liegt, schaute "Apache Cordova" gut aus. Ich bin mir jedoch unsicher, ob die daraus erstellte App die Anforderungen bieten kann. Eventuell habt ihr noch andere Vorschläge oder Lösungsideen.

Anforderungen:
  • offline sowie online nutzbar
  • Schlichte Oberfläche
  • Formular mit verschiedenen Eingabefeldern und Berechnungen (zB eine Bestellung mit Menge und Preisen)
  • Speicherung der Daten in einer Datenbank oder einer Datei
  • Umwandlung der Daten in eine PDF mit vorgegebenem Layout
  • bei bestehender Internetverbindung upload der PDF auf FTP-Server

Vielen Dank euch im Voraus
 
Hi,

mit Cordova habe ich das letzte mal vor Jahren gearbeitet, damals hieß das noch PhoneGap. Das war nichts umfangreiches, hab aber trotzdem keine schlechten Erinnerungen daran. Ich hab mal kurz bei npm geschaut, für pdf und ftp scheint es passende packages zu geben, sqlite als Datenbank scheint schon an Bord zu sein.

Für meine aktuelle App hab ich auf flutter gesetzt und bin damit auch sehr zufrieden. Auch hier gibt es packages für sqlite, pdf und ftp. Dart ist relativ nah an JavaScript, ist aber trotzdem im Detail verschieden.

Wenn du Zeit und Lust hast, dann würde ich an deiner Stelle mit beidem mal ein proof of concept umsetzen. Halt nur ein einfaches Formular mit einem Button. Die Daten werden dann in ein pdf gerendert und auf einen FTP-Server geladen. Damit siehst du am ehesten was für dich geeignet ist :)

Viel Erfolg!
 
  • Gefällt mir
Reaktionen: Firehold und netzgestaltung
Vielen dank für deine überaus ausführliche Antwort!
PhoneGap wurde ja letztes Jahr eingestampft und in Cordova integriert. Was halt sehr reizvoll ist, dass ich ohne Swift oder Java loslegen könnte mit meinen bisherigen Kenntnissen bzw. ein paar Zusatzlektionen.

Cordova funktioniert ja über das Node.js Framework, habe bisher weder mit node noch npm gearbeitet, wäre also beides neuland für mich.

Flutter habe ich schonmal gelesen aber so noch nicht auf dem Schirm gehabt, wie stark muss man sich denn eine Umstellung vorstellen von javascript?

An sich schaut flutter auch sehr gut aus, gibt es neben der neuen programmiersprache noch andere "nachteile" welche ich beachten müsste?

Danke im Voraus ;)
 
Wenn du JS/TS machen willst würde ich direkt Ionic nehmen und nicht nur mit cordova arbeiten. Da bekommst du gleich viel nützliches out of the box.
 
Das ich mit PhoneGap gearbeitet habe ist sicher schon 7 oder 8 Jahre her. Entweder gab es das damals noch nicht mit node oder ich wusste es damals einfach nicht.

Packagemanager wirst du so oder so brauchen, ob das nun npm für JavaScript oder pub.dev für Dart ist nimmt sich am Ende vermutlich nicht so viel.

Wie stark die Umstellung von JavaScript auf Dart (Flutter ist das Framework, Dart die Sprache) ausfällt kann ich schlecht einschätzen. Für mich persönlich war es kein Problem, ich programmiere aber schon relativ lange. Das Einfachste um das herauszufinden ist vermutlich "einfach mal machen". Da bekommt man vermutlich am schnellsten mit ob es einem liegt oder man doch lieber wechselt. Muss ja nicht viel sein, ein POC reicht da ja schon.

Wenn es noch so ist wie früher, dann erstellst du mit Cordova ja am Ende nur eine Website, die dann auf beiden Betriebssystemen in einem Webview Wrapper läuft. Flutter hingegen wird kompiliert und läuft dann nativ auf dem jeweiligen Gerät. Ich habe gehört, dass es nötig sein kann, dass man für die einzelnen Betriebssysteme im Detail noch Anpassungen machen muss - nicht generell aber wohl bei einigen speziellen Sachen. Das ist aber nur Hören-Sagen, ich hab da keine Erfahrung da mir für iOS die nötige Hardware fehlt.

Am Ende kommst du vermutlich mit beiden Ansätzen ans Ziel :)
 
Vielen dank, viele nützliche Informationen!

Bezüglich Cordova habe ich auch nur die Informationen aus den Artikeln die ich bisher bei der Recherche gelesen habe, aber anscheinend ist es inzwischen etwas mehr als nur ein webview. Die Apps laufen auch offline, sind im grunde jedoch sicher nicht viel anders, als eine an ein Smartphone angepasste website (aber in der benutzung unterscheiden sich heute gefühlt 80% der apps eh nicht sonderlich von einer responsiven website.

Ich habe mir nun einmal flutter installiert (also git, flutter und android studio etc.). Was mir auffiel ist, dass es keine direkte benötigte Komponente für iOS gibt. Also die Programmierung scheint vorrangig für Android Apps und flutter kann das nachher in eine iOS-App kompilieren?

Generell bin ich alles andere als ein iOS-Fan und habe auch nicht viel Hardware, jedoch macht es die Anforderung aktuell nunmal notwendig.

Ist es also richtig, dass man im Adroid SDK programmiert und das im nachhinein umgemünzt wird auf apple oder wie darf man sich das vorstellen?

Danke euch ;)
 
Mit Flutter hast du die gleiche Codebasis für Android und iOS. Das wird dann je nach gewünschten Betriebssystem kompiliert. Ich benutze VSCode (AndroidStudio geht auch) um meine App für Android zu erstellen. Für iOS muss du das mit XCode kompilieren. Ich habe keinen Mac, darum kann ich dir da leider keine Details nennen.
 
  • Gefällt mir
Reaktionen: Firehold und nazdun
KitKat::new() schrieb:
"nativ" - das ist schon etwas irreführend - tatsächlich wird alles während der Laufzeit mit einer eigenen Engine gerendert:
https://betterprogramming.pub/why-flutter-isnt-the-next-big-thing-e268488521f4?gi=964971cddf92
Da Flutter von Google ist und google auch Android herausgibt, ist es ja naheliegend, dass fluttr gerade im Hinblick auf die Programmierung eher an Android angelehnt ist. Der Artikel, geschrieben von einem "Senior iOS Developer" ist schon ser informativ, aber man merkt schon stark das typische "Ich bin Apple Fan - Ich bin kein Apple Fan"-gespaltene Lager.

Das Problem ist halt wirklich, wenn man eine kleine App aufbauen möchte, welche auf beiden Betriebssystemen funktioniert, kommt man wohl letztenendes nicht drumherum Swift und Java zu lernen. Ich frage mich jedoch auch im Hinblick auf den Artikel, ob es für iOS nun mehr Sinn macht Swift oder Kotlin zu lernen.

Alles in allem ist das ganze Thema gerade für Anfänger dieses Teils der Programmierbranche sehr verwirrend.

Ich würde sicher gerne eine gute App basierend auf nativem Code programmieren, allerdings von PHP & Javascript auf Swift oder Java umzusteigen ist sicherlich eine Zeitkomponente die in den meisten Fällen die Deadline des zukünftigen Projektes überschreitet.

Mein aktueller Programmierstil ist zudem nicht sehr compiler-freundlich. Meistens Programmiere ich einen Abschnitt und schaue dann im Browser ob es funktioniert, wenn nicht Blick in die Konsole.
Bei systemorientierten Sprachen muss zwischen Codeänderung und Anzeige ja immer kompiliert werden oder gibt es da Lösungen der direkten Ansicht?

Letzter Punkt für iOS ist das Problem, dass es nicht so einfach auf Windows Systemen programmiert werden kann, die Öffnung von Xcode für windows wäre sicher ein Gewinn für den iOS-Appstore, aber da sind die Managementlager wohl noch zu engstirnig gegeneinander.
 
Wäre eine Progressive Web App eine Option? Da du ja schon Javascript kannst wäre da keine neue Programmiersprache nötig. Offline Modus sollte eigentlich inzwischen gehen mit Service Workern, Daten speichern geht mit Local Storage. Nachteil ist soweit ich es verstehe das unter IOS das nicht als App installierbar ist, sondern nur wie eine Webseite funktioniert. Die Funktionalität sollte auch dort inklusive Offline Modus gehen, aber der Benutzer muss das halt über den Browser aufrufen. Ein anderes Problem ist das die lokalen Daten weg sind wenn jemand den Browser Cache leert. Für eine Anwendung die praktisch immer offline ist kann das ein Problem sein, wenn die Anwendung regelmäßig online gehen kann sollte es kein Problem sein die Daten auf dem Server zu halten.
 
Dalek schrieb:
Wäre eine Progressive Web App eine Option? Da du ja schon Javascript kannst wäre da keine neue Programmiersprache nötig. Offline Modus sollte eigentlich inzwischen gehen mit Service Workern, Daten speichern geht mit Local Storage. Nachteil ist soweit ich es verstehe das unter IOS das nicht als App installierbar ist, sondern nur wie eine Webseite funktioniert. Die Funktionalität sollte auch dort inklusive Offline Modus gehen, aber der Benutzer muss das halt über den Browser aufrufen. Ein anderes Problem ist das die lokalen Daten weg sind wenn jemand den Browser Cache leert. Für eine Anwendung die praktisch immer offline ist kann das ein Problem sein, wenn die Anwendung regelmäßig online gehen kann sollte es kein Problem sein die Daten auf dem Server zu halten.
Ich denke das kommt eher nicht in Frage, da ist die Benutzerfreundlichkeit und konstante stabilität nicht so gut gewährleistet und würde haufenweise Supportanfragen bedeuten.
Da lerne ich lieber ein paar neue Ausdrücke. Ich meine im Grunde ähneln sich Programmiersprachen ja oft. Funktionen, Klassen, Variabeln, Objekte und Datentypen werden ja meist einfach unterschiedlich definiert und benutzt. Aber ob ich jetzt Da lerne ich lieber ein paar neue Ausdrücke. Ich meine im Grunde ähneln sich Programmiersprachen ja oft. Funktionen, Klassen, Variabeln, Objekte und Datentypen werden ja meist einfach unterschiedlich definiert und benutzt. Aber ob ich jetzt
Code:
$name = 'Firehold';
,
Code:
var name = 'Firehold';
oder
Code:
string name = 'Firehold';
schreibe, sind letztenendes nur kleinere unterschiede die sich schneller erlernen lassen, als mit 0 Vorkenntnissen.
Ich rede ja nicht von absolutem Profistand, die App soll ja zeimlich schlicht sein.
 
Das Problem ist nicht Java oder Swift, das ist der einfachste Teil. Die ganze Umgebung drumherum ist ziemlich komplex bei mobilen Anwendungen, das dauert schon eine Weile um sich da einzuarbeiten (ich kenne selbst nur Android). Soweit ich es verstehe braucht man auch einen Mac wenn man native IOS Anwendungen entwickeln will, das kann auch ein Hindernis sein.
 
  • Gefällt mir
Reaktionen: G00fY
Dalek schrieb:
Das Problem ist nicht Java oder Swift, das ist der einfachste Teil. Die ganze Umgebung drumherum ist ziemlich komplex bei mobilen Anwendungen, das dauert schon eine Weile um sich da einzuarbeiten (ich kenne selbst nur Android). Soweit ich es verstehe braucht man auch einen Mac wenn man native IOS Anwendungen entwickeln will, das kann auch ein Hindernis sein.
Was heißt den drumherum? Durch flutter habe ich ja bereits den Android Studio and SDK tools kennengelernt.
Benutzt man nicht auch dieses Tool um später die .apk zu kompilieren?

Soweit ich es verstanden habe kann man die iOS-Apps auch über eine VM programmieren, nur um die App später in den Appstore zu uploaden braucht man eine Mac-hardware oder habe ich das falsch verstanden?
 
Firehold schrieb:
Da Flutter von Google ist und google auch Android herausgibt, ist es ja naheliegend, dass fluttr gerade im Hinblick auf die Programmierung eher an Android angelehnt ist.
Flutter hat nichts mit der nativen Android Programmierung gemein. Das ist ein eigenes Framework, welches wie @KitKat::new() richtig beschrieben hat, in einer eigener Runtime ausgeführt/gerendert wird. Und Kritik an Flutter gibts auch aus der Android Community.

Firehold schrieb:
Das Problem ist halt wirklich, wenn man eine kleine App aufbauen möchte, welche auf beiden Betriebssystemen funktioniert, kommt man wohl letztenendes nicht drumherum Swift und Java zu lernen.
Ich glaube du unterschätzt die native App Entwicklung etwas. Die Programmiersprache ist vermutlich die geringste Hürde. Du musst dich aber mit einer Vielzahl von fachspezifischen Themen beschäftigen. Neben IDE und Build-Tools sind das vor allem die Besonderheiten der Plattformen (Lifecycles/Navigation, Nebenläufigkeit/Threading, View Erstellung, Berechtigungen uvm.). Daher würde ich in deinem Fall auch eher auf eine Lösung setzen, die mehr abstrahiert. Also Cordova, Flutter oder aus meiner Sicht passend zu dem was du mitbringst: React Native :)
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: nazdun
Zurück
Oben