Appentwicklung iOS und Android

Fou-Lu

Lt. Junior Grade
Registriert
Aug. 2006
Beiträge
290
Hallo an alle CBler,
allen ein frohes neues Jahr.

ich werde jetzt in den nächsten Wochen mich viel mit appentwicklung auseinander setzen müssen und wollte mich schon mal bei euch bisschen erkundigen...

also hauptplattform wird Android sein, aber iOS ist auch nich ausgeschlossen. daher schon mal meine erste Frage:

gibt es eine Möglichkeit sich bei der appentwicklung möglichst Aufwand beim portieren (android -> iPhone) zu sparen?
converter, Frameworks, etc?
es ist kontraproduktiv wenn ich ein und die selbe app zwei mal in zwei verschiedenen Sprachen (java, objective-c) schreiben muss.

desweiteren habe ich bisher auch keine möglichkeit einer komponentensammlung unter Android gesehen?!
wenn ich z.b. ein chart programmiere und es bei mehreren apps Nutzen will... somit muss ich den Quelltext in zwei oder gar drei Projekten pflegen (statt an nur einer Stelle und dieses package dann bei anderen apps Verweisen und benutzen)

was mich auch sehr interessiert ist, wie sieht's da mit html5 aus? apps die mit html5 und JavaScript programmiert werden, sollten ja auch unter iOS funktionieren oder? ist da auch multithreading und Events möglich? wird das html5 dann in nativen Code kompiliert oder lediglich im Browser ausgeführt?

Naja das wären so meine wichtigsten Fragen, hoffe ihr könnt mir da weiterhelfen und schon mal ein Riesen großes dankeschön.


PS: ich wäre ebenfalls über tutorials etc zum Thema sehr dankbar. vielleicht kennt auch jemand empfehlenswerte Bücher.
 
Da gibts Sachen wie PhoneGap http://phonegap.com und Sencha Touch http://www.sencha.com die einfach ein Wrapper sind und so auf allen Plattformen laufen, aber auch per extra API teilweise Zugriff auf native Features geben. Also keine Konvertierung in komplett native Apps. Konverter sind da Sachen wie Xamarin z.B. http://xamarin.com
Jede Komponente ist anders, jede Komponente bietet dir verschiedenen Zugriff auf plattformspezifische Sachen und alles kostet unterschiedlich viel (die meisten Sachen kosten krass viel, manche haben auch Studentenpreise o.ä. falls es dich interessiert). Es ist also extrem schwer dir etwas zu empfehlen, wenn du nicht ganz genau weißt wonach du suchst. Inzwischen gibts da auch so viel kram...schwer den Überblick zu behalten.

Ansonsten würde ich mir einfach mal was billiges simples genauer anschauen und bissle damit rumbasteln. Einfach mal PhoneGap probieren oder so. Was kannst du denn an Programmiersprachen?
 
Zuletzt bearbeitet:
Zu meinen Programmiersprachen gehören: C++, C#, Java, Delphi... in Sachen Web Javascript (oder besser gesat jQuery), PHP, HTML und CSS.
C# und Delphi sowie die Webgeschichten sind so meine Stärken. Java ist zwar kein Problem, aber da fehlt mir momentan bisschen die Übung.

Naja was ich brauche... schwer zu sagen. Ich brauch es sowohl beruflich als auch in Zukunft privat. Privat werd ich mich sowieso nur auf Android konzentrieren, da iOS mich ech nicht interessiert. Im Betrieb sollen wir, aber beides können.

Ich soll mich nun in die Thematik einarbeiten und mal gucken was es für Möglichkeiten gibt die Apps von Android nach iOS zu portieren (also die Apps sind noch nicht entwickelt).

Was mich aber auch sehr interessiert, ist wie gesagt die Komponentensache unter Android und iOS. Hab mich mit JAVA (in Eclipse und dem Android SDK) paar Stunden gespielt, aber keine Möglichkeit gefunden visuelle Komponenten zu entwickeln die man anschließend ohne Änderungen in weiteren Projekten/Apps verwenden kann... also ohne doppelten Code... und dass die vorgenommenen Änderungen an der originalen Komponente in den restlichen Projekten übernommen werden.

Das ist unter Delphi echt spitze gelöst. Hat da jemand eine Idee?

Kann vielleicht auch jemand gute Literatur zum Thema empfehlen?
 
Hat ernsthaft keiner Ahnung von App-Entwicklung hier oder gibts einfach nur so viele hilfsbereite Forum-User?

PS: Danke an BlooDFreeZe. Deine Links haben mir schon mal sehr weitergeholfen.
Wäre nur noch schön ne Antwort auf die vielen anderen Fragen zu bekommen :D :D :D
 
Zuletzt bearbeitet:
Die Programmiercommunity hier ist glaube ich nicht allzu groß =) Ich entwickle leider kein Android sondern vor allem Windows Phone und Windows 8. Hab mir nur hier und da einige Projekte angeschaut. Aber libraries lassen sich definitiv in Projekte einbinden und entsprechend können Files einfach ausgelagert werden.

Wenn du Android Apps in Java entwickelst, musst die App neu schreiben für iOS. Es gibt sicherlich Java -> Objective-C Konverter, was für simple Datenklassen vllt. noch funktioniert. Sobald es aber an die API geht, ist neu schreiben angesagt.
Man könnte glaube ich die Android App in C++ entwickeln und dann Teile übernehmen. Aber die API Unterschiede blieben natürlich. Je nach App lohnt es sich dann mehr das ganze einfach neu zu schreiben.

Literatur hab ich keine verwendet (höchstens für die Programmiersprache selbst), da die entsprechenden Guides doch meistens recht gut sind.
 
Zuletzt bearbeitet:
Wie Bloodfreeze schon gesagt hat hat kan n ein Teil der APP in C/C++ geschrieben werden.
Unter Android braucht es dann einen NDK Wrapper und iOS sollte eigentlich direkt damit arbeiten können(ObjC ist eine Obermenge von C weshalb es sich auch mit dem Compiler über setzen lässt)
Allerdings würde ich dieses Vorgehen nur für Performance-kritische Apps empfehlen, da es eine zusätzliche Komplexitätsebene zu dem Projekt hinzufügt.
Für einfache Apps würde ich auch eher etwas wie Phonegap empfehlen. Dort werden Apps mithilfe von Webtechnologien(HTML5, JavaScript, CSS) entwickelt und für verschiedene Plattformen gebaut werden.
 
Hey,
ich für meinen teil bin mit Unity ganz gut gelaufen. Ist zwar ne 3D engine hat aber seit neusten auch ne gute 2D unterstüzung. Native Befehle kannst du auch benutzen. Wenn du gut programmierst kannst du mit einen klick sofort für Android,IOS,W8,W8P etc portieren. Was die auswahl an unterstüzten platformen angeht sind die sehr gut.
Unterstüzte Sprachen sind C# und Javescript.
 
Es kommt extrem darauf an was du machen willst.

Geht es um eine "allgemeine App", also im Endeffekt eine bessere mobile Website mit einigen Telefon-Funktionen dann ist der Ansatz von BlooDFreeZe der gängiste. Du entwickelst mit modernen Web-Technologien (ECMA-Script, CSS, HTML durch jQuery / jQuery Mobile, Sencha Touch etc., angeblich ist GWT Mobile auch (wieder) ein Thema), ggf. mit Server-Backend (node.js, parse.com etc.) und ggf. Datenbanken (klassisches MySQL oder NoSQL etc.), FS etc. Der Vorteil hier ist, dass du kaum anpassen musst und die Architektur fast wirklich plattformunabhängig entwickeln kannst. Sencha Touch bietet sogar vollwertiges MVC.

Die Einpassung in die native App geschieht durch PhoneGap - damit greifst du auf die Hardware zu. Alternative ist e.g. Appcelerator Titanium welches mehr mit nativer UI hantiert - es ist mehr auf iOS und Android fokussiert, wogegen phoneGap wirklich universell ist.

Wird es wirklich spezifischer oder anspruchsvoller oder magst oder kannst du einfach kein Web, dann bieten sich Sachen wie MoSync, Xamarin oder Corona SDK an, da entwickelst du direkt in einer anderen Sprache und die App wird nativ kompiliert. Ich bin mir über die feinen Unterschiede allerdings nicht klar, da ich selber keine Apps auch fremden Frameworks basieren würden wollte - bei Web mit PhoneGap habe ich über den Großteil noch Kontrolle.

Native Entwicklung ist extrem aufwendig, hat aber den Vorteil der 100%ig nativen UI und Funktionen des OS. Die Performance, Menge an Features und das Look And Feel ist besser.

Mit 3D und Spielen kenne ich mich leider nicht aus.
 
Danke für die Antworten :)

Gibt mir schon mal einen guten Überblick und natürlich ein haufen Begriffe ( Phonegab, Sencha, GWT Mobile, etc. ), mit denen ich mich nun mal im Detail auseinander setzen muss ;)

Naja also Performance ist in unserem Bereich sehr sehr wichtig und vorraussichtlich werden wir auch viel mit Nativen-Funktionen (Hardware) arbeiten müssen.

Was mich aber noch interessieren würde. Ist es in Java mit Eclipse nicht so, dass man dort Komponenten nicht auslagern kann aus der App? Unter anderem auf Grund der Manifest-Datei? So hätte ich ja stets redundanten Code wenn ich mich nicht täusche... sprich... ich programmiere ein Chart. Verwende es in App1. App23 braucht dieses Chart auch, dann muss ich ja den kompletten Code kopieren und diesen auch an zwei Stellen pflegen in zukunft.

Oder täusch ich mich da? Danke schon mal :-)
 
Naja kommt drauf an. Du könntest maven verwenden und eine Komponente entwickeln die Charts anzeigen kann. Wenn die einmal ins lokale maven repository installiert ist kannst du sie einfach in der pom.XML referenzieren und in einem andere maven Projekt verwenden
 
Da täuscht du dich. Du kannst sowohl native Java Libraries als auch Android Libraries und sogar via Android NDK irgendwie Cpp verwenden. Bin leider bei Android nicht 100%ig im Thema.
 
Also vom NDK würde ich die Finger lassen, wenn nichts Performance relevantes gemacht werden muss. Da reichen die Android Libraries vollkommen aus.

bei xamarin ist das Problem, dass man sobald man Services(z.B. WCF) benutzen will, man das Business Paket für 999 $ braucht.
 
Jap... Kosten sind nich das Problem, aber es muss sich natürlich

a) lohnen
b) das Geld wert sein

;) :)

Der Chef hat auch kein Problem damit mal was zu bezahlen, aber wie gesagt es muss das Geld wert sein.... Viele Pakete und Tools halten ja leider oft nich mal annährend das was sie versprechen :D
 
Also ich kann nur für mich sprechen, aber ich war von XAMARIN schwer angetan, weil ich auch hauptsächlich in .NET entwickle. WCF- Services, z.B. ist saugeil...
C# super simple UND LOGISCHE Syntax.
Wie gesagt kannst du damit für alle Plattformen entwickeln, Android, IOS, WP, Windows.

Ich entwickle im Moment mit Java und den ADT (weil es eben kostenlos ist). Aber wenn XAMARIN kostenlos wäre würde ich mich nicht weiterhin mit
- ECLIPSE
- JAVA
- ADT
usw. rumärgern.
 
Hab jetzt nur den Anfang gelesen.

Also wenn man Plattformübergreifend Programmieren möchte sollte man sich mit Model Engineering beschäftigen. Dann kannst du schnell alle deine Interfaces in alle Sprachen exportieren!
 
Es kommt wie auch schon erwähnt darauf an, was genau du entwickeln möchtest.

Ich selbst arbeite seit 2 1/2 Jahren mit Corona SDK und bin relativ zufrieden mit den Ergebnissen. Du hast eine Code Basis (LUA) und es braucht normalerweise nur sehr wenige Änderungen, damit die App oder das Spiel auf iOS und Android gleichzeitig funktioniert.
Speziell im Zusammenspiel mit SVN/Git etc könnte es sich aber trotzdem lohnen ab einem bestimmten Punkt in der Entwicklung die Projekte zu splitten.
Für Dich/Euch denke ich mal besonders interessant ist die "Enterprise" Lizenz. Diese ermöglicht nämlich nativen(!) Zugriff auf iOS/Android Libraries und kann somit das Projekt um Funktionen erweitern, die normalerweise (noch!) nicht mit reinem LUA und dem Corona SDK Framework benutzt werden können.
Da ich mich mehr mit Game Development beschäftige habe ich mir auch mal Unity3D angeschaut. Für Business-"Apps" im eigentlichen Sinne finde ich die Engine dann doch etwas übertrieben(!). Für alles andere allerdings wesentlich besser ;)
 
@CineTek: vielen Dank für die ausführliche Info :-)

Sollte mir Corona vielleicht auch mal angucken.
 
@Fou-Lu: Der Beitrag ist zwar schon ein paar Tage alt, allerdings stehe ich aktuell vor genau den selben Fragen. Wie sind denn deine Erfahrungen?
 
Zurück
Oben