Binaries für Android

Praxis & Tipps | Tipps & Tricks

Ich möchte ausführbare Dateien für Android 4.4.x (KitKat) bauen und diese ohne das NDK-Build von Google mit dem C-Compiler (GCC) übersetzen. Bisher hat mein Makefile gut funktioniert, aber seit dem Update auf KitKat bekomme ich auf der Android-Kommandozeile nur noch die Fehlermeldung „not executable: magic 7F45“. Wie finde ich heraus, welche Compiler-Flags mein Makefile braucht?

Google sieht vor, dass man C-Code am besten per JNI (Java Native Interface) einbindet und Eclipse den Build-Prozess komplett überlässt. Wem das nicht passt, der kann die mit dem NDK gelieferten GNU-Compiler und -Tools auch manuell oder mit einem Makefile aufrufen – muss dann aber selbst die richtigen Cross-Compiler und -Optionen finden.

Wir mussten für unseren Benchmark Coremark beim Umstieg von Android Jelly Bean auf KitKat einige Linker-Flags modifizieren. Geholfen hat uns dabei folgender Trick:

 Importieren Sie (nach Installation von SDK respektive „adt bundle“ und NDK) das Beispielprojekt HelloJni.

 Stellen Sie sicher, dass am Ende der Datei jni/Android.mk die Zeile „include $(BUILD_EXECUTABLE)“ steht.

 Wechseln Sie auf der Kommandozeile ins Projektverzeichnis von HelloJni

 Ruft man dort das Skript ndk-build aus dem NDK-Verzeichnis auf, bauen die Android-Tools die Binaries. Diese sollten sich auf dem Android-Gerät ausführen lassen.

 ndk-build V=1 zaubert den kompletten GCC-Aufruf samt aller benötigten Pfade und Parameter auf die Konsole. Eventuell müssen Sie zuvor noch mit ndk-build clean aufräumen.

Übernimmt man die von Google verwendeten GCC-Parameter in ein eigenes Makefile, sollte auch dieses ein ausführbares Binary ausspucken. (bbe)

Artikel kostenlos herunterladen

Anzeige
Anzeige