Android-App startet Binaries

Praxis & Tipps | Tipps & Tricks

Wie kann ich ein selbst kompiliertes C-Programm in eine Android-App verpacken und von dort aufrufen?

Zuerst sollten Sie Ihr Binary auf der Kommandozeile testen (siehe vorige Frage). Klappt das, verfrachten Sie es in das Verzeichnis „assets“ des App-Projektes, was Sie in Ihrer Entwicklungsumgebung erledigen. Damit landet es in der apk-Datei und wird zusammen mit der App installiert.

Allerdings weigert sich Android, Binärdateien direkt in den Assets auszuführen. Sie müssen sich daher eine kleine Klasse basteln, die das Binary zuerst in das Verzeichnis /data/data/<App-Name> kopiert. Dazu können Sie entweder Java-Bordmittel wie FileInput- und FileOutputStream oder den von Unix bekannten Befehl „cp“ bemühen. Letzteren müssten Sie analog zu folgender Zeile aufrufen, die die Dateirechte anpasst:

Process process = Runtime.getRuntime().⤦
 exec("/system/bin/chmod 744 "+fullPath);
process.waitFor();

Starten können Sie das Programm dann über Runtime.exec(), nachdem Sie die benötigten Kommandozeilenparameter an fullPath angehängt haben:

fullPath += <Parameter>; // falls benötigt
Process process = Runtime.getRuntime().exec(fullPath);
BufferedReader reader = new BufferedReader⤦
 ( new InputStreamReader(process.getInputStream()));
process.waitFor();

Die BufferedReader-Zeile leitet die Standardausgabe des gestarteten Programms in einen InputStream um. Analog dazu kann man auch die Fehlerausgabe (getErrorStream) abgreifen oder Daten an das Binary schicken (getOutputStream). (bbe@ct.de)

Artikel kostenlos herunterladen

Anzeige