C++ für Android und Co.



  • Hi,
    C++ steht ja für alle Smartphone-Plattformen zur Verfügung. Nun ist es i. d. R. so, dass die gleiche App für jede Smartphone-Plattform in der privilegierten Sprache geschrieben wird. D. h. Java für Android, C#/.Net bei Windows Phone, Objective-C bei iOS.
    Nun will ich bald selbst ein Projekt starten und sie auf alle Smartphone-Plattformen anbieten und dachte daran, mindestens das Backend komplett in C++ zu schreiben und das UI, wenn das in Qt nicht gut aussieht, mit den nativen Libs/Sprachen zu implementieren.
    Frage: Das klingt in der Theorie irgendwie klug und wirtschaftlich, aber ich kann mir nicht vorstellen, dass alles anderen Mitbewerbe nicht selbst auf die Idee gekommen sind. Was spricht dagegen? Wo gibt es Probleme?
    Bei Android/Java kommt ja JNI zum Einsatz, aber das dürfte sich doch in Grenzen halten. Bei iOS sollte die Integration einfacher sein. Ähnlich bei Windows Phone.

    Frage: Wo ist der Haken?! Was habe ich übersehen?!

    Danke im Voraus!

    L. G.,
    IBV



  • Haken schreibt man ohne ck. 😡 👎



  • Kacker schrieb:

    Haken schreibt man ohne ck. 😡 👎

    Kaker schreibt man ohne ck 👎 👎 :whocares:

    IBV schrieb:

    Frage: Wo ist der Haken?! Was habe ich übersehen?!

    Du hast nichts übersehen, das machen viele Firmen auf diese Weise. Wozu alles 3mal schreiben? Nebenbei, Windows Phone 8 nutzt C++, nicht C#.



  • IBV schrieb:

    Nun ist es i. d. R. so, dass die gleiche App für jede Smartphone-Plattform in der privilegierten Sprache geschrieben wird.

    Ich glaube nicht dass das "in der Regel" so ist.

    Viele Spiele werden mit (C++) Frameworks entwickelt die einem die ganze Plattform wegabstrahieren.
    z.B.: http://murlengine.com/

    Viele Apps wo es auf "native look & feel" nicht ankommt werden mit anderen Frameworks geschrieben wo man auch keinen unterschiedlichen Code für die unterschiedlichen Plattformen braucht, zumindest nicht so lange man nix "sehr spezielles" machen will.
    Hierbei gibt es die verschiedensten Techniken auf denen solche Frameworks basieren. Viele verwenden HTML + Javascript + eine Art embedded Browser, andere verwenden Python, wieder andere verwenden C# (Mono) usw.
    z.B.: http://kivy.org, http://xamarin.com (Xamarin.Forms)

    Und zumindest manche Apps die doch "native look & feel" haben sollten werden mit wiederrum anderen Frameworks entwickelt welche die von dir beschriebene Architektur unterstützen: Model & Controller gemeinsam + je ein Set an Views pro Plattform.
    z.B.: http://xamarin.com

    Wer eine App für Android + iOS + WP 3x neu entwickelt, nur um die "bevorzugte Sprache" zu verwenden, der hat mMn. einen an der Waffel.



  • Hi,
    ich kann nur meine Erfahrung bei zwei Firmen wiedergeben.
    Open Whisper Systems hat Redphone (Android) und Signal (iOS-Pedant) ebenfalls in den bevorzugten Sprachen geschrieben und ich persönlich denke, dass mind. 80% der Firmen so vorgehen.
    Redet ihr da wirklich von Erfahrungen?!

    Xamarin würde ich eher nicht nutzen. Weshalb? Weil da zu den Android-Bugs in den Libs noch weitere von Xamarin hinzukommen.

    L. G.,
    IBV



  • Ich kenne ne Firma die entwickelt so-gut-wie alles nur mit Adobe Air bzw. HTML5.



  • hustbaer schrieb:

    Ich kenne ne Firma die entwickelt so-gut-wie alles nur mit Adobe Air bzw. HTML5.

    Das ist so als ob du mir jetzt gesagt hättest, dass du eine Firma kennst, die alles in VB(A) und Access entwickelt...



  • Und deine "Erfahrung mit zwei Firmen" ist interessanter ... warum?

    Aber tu was du für richtig hältst. Ich will dich sicher nicht davon abhalten alles native zu implementieren und dabei massiv Resourcen zu verschwenden. Jeder wie er meint.



  • die meisten entwickler die ich kenne schreiben den grossteil der apps und games in c++, manchmal, wenn es noetig ist, die UI mit der nativen sprache und dazu ein scripting layer mit lua/c#/python/java/js/... fuers grobe.



  • rapso schrieb:

    die meisten entwickler die ich kenne schreiben den grossteil der apps und games in c++, manchmal, wenn es noetig ist, die UI mit der nativen sprache und dazu ein scripting layer mit lua/c#/python/java/js/... fuers grobe.

    C++ mit durchgängig RAII in der Anwendungslogik?



  • ich sehe auch wenig Sinn, voll auf das jeweilige native framework zu setzen.
    Zumindest nicht bei den Kernkomponenten. Diese hätte ich nur sehr ungern in C#, Objective C oder Java vorliegen.

    C++ kann man überall compilieren, und die Funktionen kann man dann ja immer noch von Java aus aufrufen.
    Somit kann man die GUI ja durchaus im jeweiligen native framework basteln, aber die tatsächliche Logik in einer plattformübergreifenden Sprache schreiben.

    Gerade bei Spielen, wo für die Grafik ohnehin alles auf dem Grafikprozessor gezeichnet wird, empfinde ich es noch sinnvoller, all das direkt in C++ zu schreiben.



  • Ok, dann bedanke ich mich für den Meinungs-/Erfahrungsaustausch. 🙂

    L. G.,
    IBV



  • volkard schrieb:

    rapso schrieb:

    die meisten entwickler die ich kenne schreiben den grossteil der apps und games in c++, manchmal, wenn es noetig ist, die UI mit der nativen sprache und dazu ein scripting layer mit lua/c#/python/java/js/... fuers grobe.

    C++ mit durchgängig RAII in der Anwendungslogik?

    deren source ist mir eher weniger bekannt. Ich weiss nur von architect's meetings in denen eher allgemein gesagt wird welche sprachen, dev-OS, IDEs etc. supported werden sollten.



  • IBV schrieb:

    C++ steht ja für alle Smartphone-Plattformen zur Verfügung. Nun ist es i. d. R. so, dass die gleiche App für jede Smartphone-Plattform in der privilegierten Sprache geschrieben wird. D. h. Java für Android, C#/.Net bei Windows Phone, Objective-C bei iOS.

    Nein, das stimmt so nicht. Sehr häufig wird der Kern der Anwendung in eine C++-Library oä. gepackt und "nur" der GUI-Code uä. in der jeweiligen Plattformsprache geschrieben.

    Also genau so, wie du es machen möchtest.

    Habe ich schon bei einigen Unternehmen so gesehen und auf Konferenzen hört man sowas auch immer wieder. Ich habe keine Ahnung, wie anstrengend das unter Android letztlich ist, aber unter iOS ist das ziemlich simpel.



  • nman schrieb:

    IBV schrieb:

    C++ steht ja für alle Smartphone-Plattformen zur Verfügung. Nun ist es i. d. R. so, dass die gleiche App für jede Smartphone-Plattform in der privilegierten Sprache geschrieben wird. D. h. Java für Android, C#/.Net bei Windows Phone, Objective-C bei iOS.

    Nein, das stimmt so nicht. Sehr häufig wird der Kern der Anwendung in eine C++-Library oä. gepackt und "nur" der GUI-Code uä. in der jeweiligen Plattformsprache geschrieben.

    Also genau so, wie du es machen möchtest.

    Habe ich schon bei einigen Unternehmen so gesehen und auf Konferenzen hört man sowas auch immer wieder. Ich habe keine Ahnung, wie anstrengend das unter Android letztlich ist, aber unter iOS ist das ziemlich simpel.

    ist auf allen platformen relativ gleich aufwendig, sofern man eine saubere abtrennung zwischen lib und frontend haben moechte. ob das dann in objective-c, java/jni oder c# gemacht wird.

    das aufsetzen der entwicklungsumgebung war mal ein wenig aufwendig mit den ersten NDKs, aber mittlerweile kann man sich alles zusammen als SDK von intel, nvidia, etc. runterladen. zudem gibt es ausreichend tutorials dass es jeder selbst aufsetzen koennte.



  • Seit WP 8 kann man offiziell C++ programmieren.


Anmelden zum Antworten