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:
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
Wie sieht dein Android.mk aus? –