Wie verpacke ich native Kommandozeilen-Anwendungen in apk?

8

Ich möchte eine native Android-Kommandozeilenanwendung in eine apk packen. Ich habe den Anwendungsaufbau mit ndk-build, der jni / Android.mk verwendet. Die Ausgabe erfolgt in libs / armeabi / & lt; MyApp & gt ;. Ich habe auch das apk Gebäude mit Ameise. Die Apk scheint jedoch die Befehlszeilenanwendung nicht zu übernehmen. Wenn ich die apk entzippe die App ist nicht da drin.

Was muss ich tun, um eine vorgefertigte Kommandozeilen-App zu integrieren?

Was muss ich tun, damit ant läuft? (Dies wurde bereits beantwortet: Android NDK Build mit ANT-Skript )

>     
Alex I 29.06.2013, 18:42
quelle

2 Antworten

10

Siehe Android NDK-Build mit ANT-Skript .

Sie können die Binärdatei mit aapt zur APK hinzufügen, wenn Ant sie nicht automatisch aus libs/armeabi kopiert, siehe Dokumentation für ein neues Element im Ant-Skript .

Ich glaube, dass die Datei mit ausführbaren Berechtigungen in /data/data/your.package.full.name/lib korrekt extrahiert wird.

Ant Build beinhaltet einen Schritt namens " ApkBuilder ", die nur Dateien von libs/armeabi hinzufügt, die dem Muster ^.+\.so$ oder gdbserver entsprechen - letzteres nur für den Debug-Build.

Es ist jedoch nicht genug, die ausführbare Datei in "myexecutable.so" umzubenennen: Diese Datei wird nicht vom APK-Installationsprogramm auf dem Gerät extrahiert.

Es ist ausreichend, die ausführbare Datei in " lib myexecutable .so " umzubenennen: diese Datei wird vom APK extrahiert Installer Paket-Manager auf dem Gerät zu /data/data/your.package.full.name/lib mit ausführbaren Berechtigungen.

Ich persönlich möchte dieser nicht-tatsächlich-a-Bibliothek einen besonderen Namen geben, z. lib...ffmpeg...so .

    
Alex Cohn 29.06.2013, 21:01
quelle
2

Im Allgemeinen solltest du deine Befehlszeilen-App in den Ordner Assets stellen und dann AssetManager verwenden, um dein Asset zu extrahieren (vergiss nicht chmod nach der Extraktion!). Aber es wird ein Problem geben, wo es zu extrahieren ist, weil nicht jedes Verzeichnis in Android ausführbare Binärdateien speichern kann. Auf Android 2.2 habe ich /cache ausprobiert und es funktioniert. Kann nicht für neuere Androids sagen. Sorry, kann keine Empfehlungen in Bezug auf Ant geben.

    
trashkalmar 29.06.2013 20:16
quelle