2016-04-06 8 views
1

ausführen Ich versuche, OpenAL auf Android zu verwenden, um räumliches Audio zu generieren, und ich kämpfte wirklich, um meine Meinung über NDK und JNI und all das Zeug einzuwickeln.Kann OpenAL4Android-Beispiel nicht in Android Studio

Hinweis: es ist das erste Mal, dass ich verwende JNI und NDK, und ich bin ganz neu in Android-Entwicklung

Aber ich fand eine Bibliothek namens OpenAL4Android. Außerdem ist here eine Beispielanwendung, die es verwendet (unter "HelloOpenAL4Android" Titel). Das Projekt ist alt und wurde in Eclipse gemacht. Also, was ich tat, war:

  • importiert das Projekt im Android Studio (Neu-> Import Project)
  • erstellt gradle.properties Datei und hinzugefügt android.useDeprecatedNdk = true; Sonst bekomme ich einen Fehler. Dann geladen Android Studio „OpenAL4Android“ als Bibliothek zu dem Projekt (genannt „helloOpenAL4Android“)
  • die MIN- und das Ziel SDK geändert 7-15 (min) und 23 (Ziel) in build.gradle
  • versucht zu bauen das Projekt, aber ich erhalte den folgenden Fehler: enter image description here

in openalwrapper.h Header bei

#include <AL/al.h> 
#include <AL/alc.h> 

und ich habe auch diesen Fehler, wenn ich von Android Studio OpenAL4Android und OpenAL-MOB zu bauen versuchte in Ordnung um sie in meine Projekte zu integrieren.

Auf der anderen Seite gelang es mir, die .so gemeinsam genutzten Bibliotheken zu bauen für alle ABI ist einfach nicht von OpenAL4Android armeabi von runing:

NDK-build.cmd NDK_PROJECT_PATH = D: \ AndroidProjects \ OpenAL4Android \ app \ src \ main

Wissen Sie, warum ich diesen Fehler von AL/al.h immer noch nicht gefunden bekomme? Ich habe versucht, diesen Ordner (AL/al.h) überall zu platzieren, immer noch nicht gefunden.

Hat es damit zu tun, dass Android Studio NDK nicht ordnungsgemäß unterstützt? Soll ich ein experimentelles Gradle Plugin benutzen?

Es bringt mich wirklich um.

... bitte helfen! :)

PS: Entschuldigung für die lange Post, ich bin ziemlich verzweifelt, ich kann mein Projekt nicht abschließen, und mir läuft die Zeit davon.


EDIT1:

Das ist mein Android.mk Datei:

TARGET_PLATFORM := android-23 
ROOT_PATH := $(call my-dir) 


######################################################################################################## 
include $(CLEAR_VARS) 

LOCAL_MODULE  := openal 
#LOCAL_ARM_MODE := arm 
LOCAL_PATH  := $(ROOT_PATH) 
LOCAL_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/../openal/include $(LOCAL_PATH)/../openal/OpenAL32/Include 
LOCAL_SRC_FILES := ../openal/OpenAL32/alAuxEffectSlot.c \ 
        ../openal/OpenAL32/alBuffer.c  \ 
        ../openal/OpenAL32/alDatabuffer.c \ 
        ../openal/OpenAL32/alEffect.c  \ 
        ../openal/OpenAL32/alError.c   \ 
        ../openal/OpenAL32/alExtension.c  \ 
        ../openal/OpenAL32/alFilter.c  \ 
        ../openal/OpenAL32/alListener.c  \ 
        ../openal/OpenAL32/alSource.c  \ 
        ../openal/OpenAL32/alState.c   \ 
        ../openal/OpenAL32/alThunk.c   \ 
        ../openal/Alc/ALc.c     \ 
        ../openal/Alc/alcConfig.c   \ 
        ../openal/Alc/alcEcho.c    \ 
        ../openal/Alc/alcModulator.c   \ 
        ../openal/Alc/alcReverb.c   \ 
        ../openal/Alc/alcRing.c    \ 
        ../openal/Alc/alcThread.c   \ 
        ../openal/Alc/ALu.c     \ 
        ../openal/Alc/android.c    \ 
        ../openal/Alc/bs2b.c     \ 
        ../openal/Alc/null.c     \ 

LOCAL_CFLAGS  := -DAL_BUILD_LIBRARY -DAL_ALEXT_PROTOTYPES 
LOCAL_LDLIBS  := -llog -Wl,-s 

LOCAL_STATIC_LIBRARIES := libtremolo 

include $(BUILD_SHARED_LIBRARY) 

######################################################################################################## 

include $(CLEAR_VARS) 

LOCAL_MODULE  := openalwrapper 
LOCAL_ARM_MODE := arm 
LOCAL_PATH  := $(ROOT_PATH) 
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../openal/include $(LOCAL_PATH)/../openal/tremolo 
LOCAL_SRC_FILES := openalwrapper.c        \ 
        org_pielot_openal_OpenAlBridge.c \ 

LOCAL_LDLIBS  := -llog -Wl,-s 

LOCAL_STATIC_LIBRARIES := libtremolo 
LOCAL_SHARED_LIBRARIES := libopenal 

include $(BUILD_SHARED_LIBRARY) 

######################################################################################################## 

und die openal forder ist auf der gleichen Ebene mit jni Ordner Ordnerstruktur:

OpenAL4Android 
    -app 
    --src 
    ---main 
    -----jni 
    -----openal 
    -----java 
    -----jniLibs 
    -----res 
+0

Wie sieht dein Android.mk aus? –

Antwort

0

Nevermind, ich habe es funktioniert. Ich habe es in mein Projekt integriert.Musste experimentelles Gradle-Plugin verwenden und musste dann erneut ndk-build ausführen, damit es die Bibliotheken im libs-Ordner erzeugte. Zuerst bekam ich ein paar Fehler, dass es die Implementierung der nativen Methoden nicht finden konnte, weil ich dachte, dass es seine Bibliotheken aus dem jniLibs-Ordner bekommen würde.

Verwandte Themen