Androidprogrammierung in C

  • Hallo,
    zwar ist Android wohl üblich in Java zu programmieren, da ich aber gerade lese, das Angry Birds in c geschrieben ist, ist es wohl doch auch durchaus üblich in C für Android zu programmeiren.
    Da ich mich gerade in C einerbeite und nicht auch noch aprallel..etcp.. _-) lange Rede kein Sinnc :)


    Wie programmiert man in C android? wenn man z.B zugriff auf die Bluetooth Schnittstelle benötigt und natürlich Touchsreen

  • Guck mal unter https://developer.android.com/tools/sdk/ndk/index.html
    Mit dem NDK kannst du in C und C++ arbeiten.
    Leider ist oftmals das NDK nur stiefmütterlich behandelt und es kann vorkommen, dass aktuelles nicht dort vorhanden ist.
    Auch ist aktuell (soll wohl bald kommen meine ich gelesen zu haben) im Android Studio keine Integration vorhanden. Daher musst du eine alternative IDE nehmen.
    Bluetooth sollte aber drin sein ;)

    MfG,
    Christopher


    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke

  • Google selbst rät davon ab.


    Bei Angry Birds hat das natürlich den Sinn, dass man den Code nur einmal bastelt und immer wieder benutzt.
    Für Android Apps selbst solltest Du aber wirklich lieber Java benutzen. ;)

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • die Frage ist natürlich ..warum? :)
    Das es vom Prinzip her besser ist, ist keine Frage..aber wenn selbst so "komplexe" Dinge wie angry birds ohne Probleme laufen, sollten meine weniger Anspruchsvollen Sachen ja kein so großes Problem darstellen...dacht ich mir...

  • Die Antwort gibt Dir Google:

    Zitat

    Before downloading the NDK, you should understand that the NDK will not benefit most apps. As a developer, you need to balance its benefits against its drawbacks. Notably, using native code on Android generally does not result in a noticable performance improvement, but it always increases your app complexity. In general, you should only use the NDK if it is essential to your app—never because you simply prefer to program in C/C++.


    https://developer.android.com/tools/sdk/ndk/index.html


    Angry Bird ist in C++ geschrieben, nutzt OpenGL und OpenAL und wird für verschiedene Systeme gepflegt.
    Das Ding ist ein Schlachtschiff an Software und die Anforderung, den Kram in Java umschreiben zu müssen, wäre nicht zu schaffen.


    Zitat

    Typical good candidates for the NDK are CPU-intensive workloads such as game engines, signal processing, physics simulation, and so on. When examining whether or not you should develop in native code, think about your requirements and see if the Android framework APIs provide the functionality that you need.


    https://developer.android.com/tools/sdk/ndk/index.html


    Die Komplexität Deiner Anwendung wird um ein Vielfaches ansteigen, wenn Du in C/C++ programmierst.
    UI Design in C wird mindestens schwierig. Deine Komponenten werden eher nicht so aussehen und funktionieren, wie man es gewöhnt ist.
    Die Nutzung der C/C++ Funktionen zur Speicherverwaltung grätschen in gewissen Maße der Garbage Collection rein, niemand kann Dir also den Hintern retten, wenn Dein Code irgendwo Speicherfehler hat. (Und die wird er haben, verlass Dich drauf. ^^)


    Zusätzlich kostet der Wechsel von der Java Ebene zur nativen Ebene immer ein paar Ressourcen. Fällt nicht so auf, wenn man nur mal eben in die App rein und aus der App wieder raus springt. Wenn Du aber im nativen Bereich über JNI auf Java-Komponenten zugreifen willst, wird Deine hardwarenahe "schnelle" Anwendung plötzlich sehr sehr langsam. Langsamer als würdest Du das in reinem Java lösen.


    Der größte Kritikpunkt am NDK meiner Meinung nach: es bezieht sich auf sehr erfahrene Entwickler. Wie die Jungs, die Angry Bird entwickelt haben.
    Dementsprechend hast Du absolut KEINE Hilfen bezüglich der Dinge, die Du machen kannst – außer natürlich den C/C++ Header Dateien. Ohne Buch, dass Dich da ein bisschen ran führt, wirst Du sicherlich mehr Frust als Freude daran haben.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!