Я пытаюсь использовать OpenAL на Android для создания пространственного звука, и я действительно изо всех сил пытался обмануть NDK и JNI и все такое.Не удается запустить OpenAL4Android в Android Studio
Примечание: это первый раз я использую JNI и NDK и я совершенно новый для андроида развития
Но я нашел библиотеку под названием OpenAL4Android. Кроме того, here - пример приложения, использующего его (под заголовком «HelloOpenAL4Android»). Проект старый и был выполнен в Eclipse. Так что я сделал:
- импорта проекта в Android Studio (New-> Import Project)
- созданные gradle.properties файл и добавил android.useDeprecatedNdk = истина; в противном случае я получаю сообщение об ошибке. Тогда Android-студия загружена «OpenAL4Android» в качестве библиотеки к проекту (так называемый «helloOpenAL4Android»)
- изменил мин и целевой SDK от 7 до 15 (мин) и 23 (целевой) в build.gradle
- попытался построить проект, но я получаю следующее сообщение об ошибке:
в openalwrapper.h заголовке в
#include <AL/al.h>
#include <AL/alc.h>
и я также получил эту ошибку, когда я пытался строить из Android Studio OpenAL4Android и OpenAL-MOB в порядке интегрировать их в мои проекты.
С другой стороны, мне удалось построить .so разделяемых библиотек для всех ABI не только armeabi от OpenAL4Android по подножке:
NDK-build.cmd NDK_PROJECT_PATH = D: \ AndroidProjects \ OpenAL4Android \ приложение \ src \ main
Знаете ли вы, почему я продолжаю получать эту ошибку AL/al.h не найден? Я попытался разместить эту папку (AL/al.h) повсюду, но не нашел.
Это связано с тем, что Android Studio не поддерживает NDK правильно? Должен ли я использовать экспериментальный плагин gradle?
Это действительно убивает меня.
... пожалуйста, помогите! :)
PS: извините за длинный пост, я довольно отчаянный, я не могу завершить свой проект, и у меня заканчивается время.
EDIT1:
Это мой Android.mk файл:
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)
########################################################################################################
и OpenAL Фордер находится на том же уровне с папкой структуры папки JNI:
OpenAL4Android
-app
--src
---main
-----jni
-----openal
-----java
-----jniLibs
-----res
Как выглядит ваш Android.mk? –