Makefile benötigt für die Erstellung der Opus-Codec für Android
Ich versuche zu kompilieren, den opus-audio-codec (http://www.opus-codec.org/downloads/) für den Einsatz in einer Android-Anwendung. Ich bin mit Android NDK (release 6), zum kompilieren meine Bibliotheken. Bis jetzt, die native C-Bibliotheken, die ich hatte, zu kompilieren, für meine Anwendung ist ziemlich einfach und ich konnte auf meine Android.mk-Dateien in jni meistens auf tutorials oder andere Beispiele. Jedoch, die Zusammenstellung von Opus sieht etwas komplexer. Die tar.gz Archiv enthält eine solution-Datei für die Erstellung der Bibliotheken für Windows und es enthält auch einige Makefiles für ein standard-Unix-Implementierung, sondern übersetzen diese in ein Android.mk makefile für die Verwendung durch das Android NDK ist ein bisschen eine Herausforderung.
Ich habe gesucht, aber wurden nicht in der Lage zu finden eine online-version für die Android-makefile zu kompilieren libopus. Kann mir jemand vielleicht link für mich wie ein makefile? Alternativ könnte ich fehlt etwas einfacher? Ist es vielleicht möglich, Sie zu verwenden, Automake oder irgendeine Art von Konverter, um vielleicht generieren die Android.mk-Datei für mich aus dem unix-makefile, das bereits im Lieferumfang enthalten in der tar.gz?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Folgenden ist die Android.mk makefile, die schließlich für mich gearbeitet. Ich hoffe, dies kann helfen, jemand anderes auch in Zukunft. Nehmen Sie zur Kenntnis, dass in der unix-makefile enthalten in der Opus-Archiv, die Entscheidung, ob das fest-oder float-Seide Quellen ist definiert als ein "ifdef" in der Erwägung, dass hier verwende ich "fixiert". (Verwenden Sie "float" einfach wäre - einfach die update-Pfade "Seide/fester" Punkt auf "Seide/float" und aktualisieren Sie die CFLAGS.
WICHTIG BEARBEITEN
Die Bilder könnten nicht mehr aktuell, aber die Arbeit wurde getestet unter den Versionen:
Einer aktualisierten version (funktioniert für opus-1.1.2 ) von @praneetloke Lösung. Eine Art anderer Ansatz mit einigen extras.
Zuerst unten ist meine Struktur zu verwenden (ich, gedacht, um mehr Bibliotheken, so habe ich opus in seinem eigenen sub-Ordner. )
Zweitens ich habe einen root
Android.mk
- Datei und eine andere in den Ordner opus-1.1.2 .Hier ist die Wurzel
Android.mk
Datei:Android.mk
Datei im opus-1.1.2 Ordner ist unter:Dies ist, wie es von innen aussieht opus-1.1.2 Ordner:
Nur berühren Sie, um die original-Quellen ist neben einer
Android.mk
- Datei. Nichts entfernt.Diese Weise kann ich verwenden und aktualisieren opus wie eine eigene Bibliothek.
Ist hier die extras, für diejenigen, die will, zu kompilieren und zu verwenden, opus, in android; - Wrapper Quelle, teilweise:
Application.mk
- Datei (optional)APP_ABI := all
imApplication.mk
generiert Haufen .so Datei. Wenn Sie möchten, dass nur armeabi und armeabi-v7a, dann können SieAPP_ABI := armeabi armeabi-v7a
. Ich habe nicht getestet und die anderen .also Dateien tho.Dank @Stanley, ich war in der Lage, erstellen Sie eine freigegebene Bibliothek erfolgreich durch tweaking seine Lösung ein wenig. Ich weiß noch nicht, ob es ist ein Vorteil, dass eine statische Bibliothek gegen eine shared library. Alles was ich weiß ist, ich brauche eine shared-library für die JNI-wrapper. Dies ist, was ich habe. Hinweis: die compiler-flags für eine Feste Stelle. Ohne diejenigen, die Kompilierung wird fehlschlagen, für fixed-point-Modus.
Kopieren Sie zuerst die
celt_sources.mk
,silk_sources.mk
undopus_sources.mk
aus der opus-source-tarball auf Ihrem jni Verzeichnis. Um diese Dateien in IhreAndroid.mk
Datei fügt verschiedene Variablen, die Sie verwenden können, um die Quell-Dateien basierend auf der Art des Aufbaus. Dies ist, was die opus-build-Prozess als auch nicht.Hier ist mein Projekt-Struktur für die opus-Bibliothek.
_buf_size / 2
auf x86, aber es stürzt mit einem segfault, wenn ich nur pass_buf_size
alsjint
(works fine on ARM). Ich habe bemerkt, dass im code von einer anderen person geschrieben, aber ich weiß nicht, der Grund für dieses Verhalten. Warum muss ich teilen Sie die Puffer-Größe von 2? Der stream ist in mono, btw.BEARBEITEN: verwenden Sie Einfach die akzeptierte Antwort, die Lösung weiter oben, den original-link ist tot und es ist im Grunde das gleiche wie die akzeptierte Antwort auf die Zeit, antwortete ich.
Hier ist ein, vielleicht ein wenig veraltet ist (es verwendet opus 0.9.14):https://github.com/haxar/mangler/blob/master/android/jni/Android.mkDu bist zu schreiben JNI-Wrapper, nachdem die Bibliothek zu kompilieren, aber...