无法在 Android Studio 中 运行 OpenAL4Android 示例
Can't run OpenAL4Android example in Android Studio
我正在尝试在 Android 上使用 OpenAL 来生成空间音频,我真的很难将我的注意力集中在 NDK 和 JNI 以及所有这些东西上。
注意:这是我第一次使用 JNI 和 NDK,我对 android 开发
还很陌生
但我找到了一个名为 OpenAL4Android 的库。此外 here 是一个使用它的示例应用程序(在 "HelloOpenAL4Android" 标题下)。该项目很旧,是在 Eclipse 中完成的。所以我所做的是:
- 在 Android Studio 中导入项目(新建->导入项目)
- 创建了 gradle.properties 文件并添加了 android.useDeprecatedNdk=true;否则我得到一个错误。然后 Android Studio 将 "OpenAL4Android" 作为库加载到项目中(称为 "helloOpenAL4Android")
- 在 build.gradle
中将 min 和 target sdk 从 7 更改为 15(min) 和 23(target)
- 尝试构建项目,但出现以下错误:
在 openalwrapper.h header 在
#include <AL/al.h>
#include <AL/alc.h>
当我试图从 Android Studio OpenAL4Android 和 OpenAL-MOB 构建以便将它们集成到我的项目中时,我也遇到了这个错误。
另一方面,我通过运行 :
设法为所有 ABI 构建了 .so 共享库,而不仅仅是来自 OpenAL4Android 的 armeabi
ndk-build.cmd NDK_PROJECT_PATH=D:\AndroidProjects\OpenAL4Android\app\src\main
你知道为什么我一直收到 AL/al.h 找不到的错误吗?我试着把那个文件夹(AL/al.h)到处放,还是找不到。
是否与 Android Studio 不正确支持 NDK 有关?我应该使用实验性 gradle 插件吗?
真是气死我了
...请帮忙! :)
PS:很抱歉 post,我很绝望我无法完成我的项目而且我 运行 没时间了。
编辑 1:
这是我的 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 forder与jni文件夹同级
文件夹结构:
OpenAL4Android
-app
--src
---main
-----jni
-----openal
-----java
-----jniLibs
-----res
没关系,我让它工作了。我将它集成到我的项目中。必须使用实验性 gradle 插件,然后必须再次 运行 ndk-build 以便它在 libs 文件夹中生成库。首先,我遇到一些错误,说它找不到本机方法的实现,因为我认为它会从 jniLibs 文件夹中获取它的库。
我正在尝试在 Android 上使用 OpenAL 来生成空间音频,我真的很难将我的注意力集中在 NDK 和 JNI 以及所有这些东西上。
注意:这是我第一次使用 JNI 和 NDK,我对 android 开发
还很陌生但我找到了一个名为 OpenAL4Android 的库。此外 here 是一个使用它的示例应用程序(在 "HelloOpenAL4Android" 标题下)。该项目很旧,是在 Eclipse 中完成的。所以我所做的是:
- 在 Android Studio 中导入项目(新建->导入项目)
- 创建了 gradle.properties 文件并添加了 android.useDeprecatedNdk=true;否则我得到一个错误。然后 Android Studio 将 "OpenAL4Android" 作为库加载到项目中(称为 "helloOpenAL4Android")
- 在 build.gradle 中将 min 和 target sdk 从 7 更改为 15(min) 和 23(target)
- 尝试构建项目,但出现以下错误:
在 openalwrapper.h header 在
#include <AL/al.h>
#include <AL/alc.h>
当我试图从 Android Studio OpenAL4Android 和 OpenAL-MOB 构建以便将它们集成到我的项目中时,我也遇到了这个错误。
另一方面,我通过运行 :
设法为所有 ABI 构建了 .so 共享库,而不仅仅是来自 OpenAL4Android 的 armeabindk-build.cmd NDK_PROJECT_PATH=D:\AndroidProjects\OpenAL4Android\app\src\main
你知道为什么我一直收到 AL/al.h 找不到的错误吗?我试着把那个文件夹(AL/al.h)到处放,还是找不到。
是否与 Android Studio 不正确支持 NDK 有关?我应该使用实验性 gradle 插件吗?
真是气死我了
...请帮忙! :)
PS:很抱歉 post,我很绝望我无法完成我的项目而且我 运行 没时间了。
编辑 1:
这是我的 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 forder与jni文件夹同级 文件夹结构:
OpenAL4Android
-app
--src
---main
-----jni
-----openal
-----java
-----jniLibs
-----res
没关系,我让它工作了。我将它集成到我的项目中。必须使用实验性 gradle 插件,然后必须再次 运行 ndk-build 以便它在 libs 文件夹中生成库。首先,我遇到一些错误,说它找不到本机方法的实现,因为我认为它会从 jniLibs 文件夹中获取它的库。