I've spent roughly 1/3 of my day searching for a solution for this, and haven't found a darn thing so far. My app uses the NDK and the main game library is dependent on another library, OpenAL Soft. I've tried including it in multiple ways and no matter what happens, my app crashes because it can't find it.
This is my Android.mk file if it helps.
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := Looptil
LOCAL_CFLAGS := -Wall -Wextra
LOCAL_C_INCLUDES += $(NDK_APP_PROJECT_PATH)/../../source/vectormath
LOCAL_C_INCLUDES += $(NDK_APP_PROJECT_PATH)/../../source/enet-1.3.6/include/
LOCAL_C_INCLUDES += $(NDK_APP_PROJECT_PATH)/../../source/enet-1.3.6/include/enet
LOCAL_C_INCLUDES += $(NDK_APP_PROJECT_PATH)/include/
LOCAL_SRC_FILES := ../common/game.c jni.c
LOCAL_SRC_FILES += ../../../source/stbi.c
LOCAL_SRC_FILES += ../../../source/ezxml.c
LOCAL_SRC_FILES += ../../../source/linkedlist.c
LOCAL_SRC_FILES += ../../../source/spline.c
LOCAL_SRC_FILES += ../../../source/math.cpp
LOCAL_SRC_FILES += ../../../source/debug.cpp
LOCAL_SRC_FILES += ../../../source/input.cpp
LOCAL_SRC_FILES += ../../../source/rng.c
LOCAL_SRC_FILES += ../../../source/ogldrv.cpp
LOCAL_SRC_FILES += ../../../source/leaderboard.cpp
LOCAL_SRC_FILES += ../../../source/menus.cpp
LOCAL_SRC_FILES += ../../../source/profile.cpp
LOCAL_SRC_FILES += ../../../source/aldrv.cpp
LOCAL_SRC_FILES += ../../../source/wavstream.c
LOCAL_SRC_FILES += ../../../source/game.cpp
LOCAL_SRC_FILES += ../../../source/net_put.cpp
LOCAL_SRC_FILES += ../../../source/netplay.cpp
LOCAL_SRC_FILES += ../../../source/ndk_util.c
LOCAL_SRC_FILES += ../../../source/jo_jpeg.cpp
LOCAL_SRC_FILES += ../../../source/enet-1.3.6/callbacks.c
LOCAL_SRC_FILES += ../../../source/enet-1.3.6/compress.c
LOCAL_SRC_FILES += ../../../source/enet-1.3.6/host.c
LOCAL_SRC_FILES += ../../../source/enet-1.3.6/list.c
LOCAL_SRC_FILES += ../../../source/enet-1.3.6/packet.c
LOCAL_SRC_FILES += ../../../source/enet-1.3.6/peer.c
LOCAL_SRC_FILES += ../../../source/enet-1.3.6/protocol.c
LOCAL_SRC_FILES += ../../../source/enet-1.3.6/unix.c
LOCAL_LDLIBS := -lGLESv2
LOCAL_LDLIBS += -lopenal
include $(BUILD_SHARED_LIBRARY)
Initially, I was including the library directly by using $(NDK_APP_PROJECT_PATH)/lib/libopenal.so, but that didn't work either, so I moved it to the main library folder. Everything builds fine, and no linker errors show up. And yes, I did attempt to call System.loadLibrary as so:
try
{
System.loadLibrary("openal");
System.loadLibrary("Looptil");
}
catch( UnsatisfiedLinkError e )
{
}
I've also tried changing the file name to libopenal.so, adding a full path, and tried every suggestion I've found on google; nothing works. This REALLY sucks. Any ideas? Thanks.
Shogun.
EDIT: If it helps, this is the build of OpenAL-Soft I'm using: https://github.com/apportable/openal-soft