# Android Programmierung mit C++ (Rebellion!)



## Crysis nerd (8. November 2013)

Hallo ihr,

ich möchte nun endlich mal wieder was für Android programmieren. Ich habe bereits mehrere Minisachen programmiert, ein kommerzielles Projekt. Alles mit Java, so wie es "soll". Nur ich mag Java nicht. Ich mag C++. Ich kann C++ auch besser als Java. 
Also google ich. 
NDK. Wow. So C++. Much cool. Such less Java.
But... "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++."

Frage: Stimmt das oder will Google nur wieder irgendwas durchsetzen, weil es für sie besser ist? Spricht etwas ernsthaftes dagegen seine App (hauptsächlich) in C++ zu programmieren? Also mein Grund wäre genau dieser: "simply because I prefer C++".

Was sagen die Meister? Darf ich oder sollte ich nicht?

Grüße


----------



## Leandros (8. November 2013)

Der Meister sagt, das was du möchtest ist unmöglich.

Außerdem sagt der Meister: Lass die Finger vom NDK, außer für low-level implementationen. Du kommst nicht um Java rum, du musst so oder so die gesamte Ui in Java schreiben, das heißt es bleibt eh überhaupt nicht viel übrig in C++ zu schreiben.


----------



## MaxRink (8. November 2013)

C++ für Dalvik ist krepel. Macht nur für Latenz- und Performancekritische Anwendungen Sinn. Lern deswegen Java.


----------



## Leandros (8. November 2013)

Dalvik? Pff. Dalvik ist alt. ART ist die Zukunft.


----------



## Crysis nerd (8. November 2013)

Okay...
Ich will aber!!
Nagut.. dann nicht.
Java kann ich ja, nur mag ich nicht ^_^


----------



## Leandros (8. November 2013)

Kannst es ja gerne Versuchen, es wird nur nicht funktionieren, da du mit dem NDK eben keinen Zugriff auf die gesamten Ui Methoden hast.
Es ist möglich, musst nur eben alles selber zeichnen. 

Was stört dich denn bitte so an Java?


----------



## Crysis nerd (8. November 2013)

Joa das hatte ich mir schon gedacht irgendwie, dass das NDK sowieso nicht die komplette API zu Verfügung hat. Geht ja auch schlecht. 
Und naja selber zeichnen ist auch nicht so toll, weil ja diese ganzen Scrollview usw. hardwarebeschleunigt sind und man da nich umbedingt alles alleine machen sollte. 

Ich sag mal so: Ich genieße die unheimliche Freiheit an C++ und vorallem das Prinzip: Kein Overhead für Features, die du nicht nutzt. Nur kleines Beispiel: Wenn man keine dynamisch gebundene Methoden in C++ nutzt, lässt man halt das keyword virtual weg und zack, ist der Methodenaufruf direkt und ohne vtable. Aber ich will keine Performance Diskussion zwischen den Sprachen vom Zaun brechen...
Ich habe viele Gründe, warum ich in C++ lieber programmierer. 

Aber um sinnvoll zu werden: Du als "Profi": Womit arbeitest du? Eclipse? Diesem Android Studio von Google?


----------



## Leandros (8. November 2013)

Vim.

Können die das mal auf 4 Zeichen reduzieren? Ich will nur mit vim antworten können.


----------



## Crysis nerd (8. November 2013)

Damn it, oke damit hätte ich rechnen müssen 
Aber wie genau machst du das? Was ich in Erinnerung habe, werden nen shitload an Dateien autogeneriert. Iwelche String Files, xml files, bla files ...
Machst du alles per Hand?

Alles per Terminal zu compilieren und soweiter find ich nicht schlecht... also die Idee an sich.


----------



## Leandros (8. November 2013)

Das schöne ist, bei Android bist du wirklich auf keine IDE angewiesen, bei iOS musst du in XCode springen um XIBs / Storyboards anzulegen. Das Gegenstück von Android sind die .xml files und die kann ich ja vollkommen ohne GUI schreiben (die klicki bunti designer halte ich für totalen Schwachsinn).

Es kommt wirklich drauf an. Ich nutze auch Android Studio seit über 1 Jahr (Android Studio == IntelliJ IDEA), habe es etwas gemodded und alle Funktionen bis auf den Editor und Cmd +F11 rausgestrippt. Damit kann ich direkt compilen und deployen. 
Allerdings nutze ich auch für vieles einfach TextWrangler o.ä. Compilen kann ich simpel mit cli und deployen auch.

Bist du schon auf Gradle umgestiegen?


----------



## Crysis nerd (8. November 2013)

Nö, Gradle kannte ich garnicht. Wofür brauch ich das? 
Und ich müsste halt gucken, was iwie das beste ist. Da ich nicht so in der Android Programmierung drin bin, dürfte das manuelle Schreiben von XML Files erstmal viel Einarbeitung erfordern. Ist die Frage, ob das sinnvoll ist im engeren Sinne...
Und was ist TextWrangler?


----------



## Leandros (8. November 2013)

Gradle ist zum compilen von Android applications und hat damit ANT / Maven abgelöst.
Wie erstellst du denn deine XML files? Mit dem klickibunti editor von Eclipse? Uäahhh. Da läufts mir kalt den Rücken runter.
Schau dir die XML Files mal an und fang an die Änderungen in der File zu machen, die Änderungen kannst du dir ja immer noch im Editor anschauen. Es ist um ein vielfaches einfacher, die Layouts so zu designen, du hast viel besser Kontrolle und es geht einfach schneller.
TextWrangler ist ein ganz simpler Text Editor für Mac OS X. (Ja, ich bin Mac OS / iPhone Nutzer privat).


----------



## Crysis nerd (9. November 2013)

Naja als ich mal was gemacht habe, hab ich natürlich mit dem Klicki Bunti Editor angefangen. Aber du hast schon recht, dass er nach sehr kurzer Zeit nichts bringt. Allerdings hab ich halt trotzdem nie die richtige Syntax für die XML Teile im Kopf. Ich hab halt hybrid gearbeitet, d.h. Wenn der Editor zu blöd war, etwas zu machen, von Hand. Auch sonst von Hand. Wenn ich von Hand nicht weiterwusste, mal in den Editor, an Eigenschaften rumschrauben und "hey siehe da, so geht das".
Ich hab leider generell ein Scheiß gefühl, wenn Sachen maschinell erstellt werden. Ich hab dann total schnell das Gefühl, dass ich keine Kontrolle mehr über mein Projekt habe. Ich habe so viel überall rumgeklickt, die autogenerierten Dateien sind bestimmt Murks und ahhhh... 
Ich hahb ja auch gerne die volle Kontrolle...


----------



## Leandros (9. November 2013)

Android IDEs generieren eine Datei. Die R.java. Mehr nicht.


----------



## xNeo92x (15. Januar 2014)

Wie wäre es mit C#? Ist Java sehr ähnlich, hat aber meiner Meinung nach einen besseren Aufbau. Hab zumindest C# und Java in der Schule kennengelernt und damit Mini-Games wie Tic-Tac-Toe erstellt. Hier is ne Erweiterung für Visual Studio und SharpDevelop mit der man in C# für Android programmieren kann: Welcome to dot42
Werde mich in Zukunft näher damit befassen, weil ich selber etwas für Android machen will.


----------



## Ahab (15. Januar 2014)

Wie wärs einfach mit Apps für Windows 8/Windows Phone 8?  Für die Plattformen kann man auch in C++ entwickeln, ich weiß nur nicht genau mit welchen Abhängigkeiten/unter welchen Bedingungen.


----------

