Question

I'm trying to compile the Speex library in Android. When I compile this library in shared mode, everything is ok, but when I try compile it in static mode the ndk seem do nothing and the library it not generates.

I've read that I only have to change include $(BUILD_SHARED_LIBRARY) by (BUILD_STATIC_LIBRARY) but this does not work and the library is not compiled and I don't get any error in the console.

Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := speex

ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
    LOCAL_CFLAGS += -DHAVE_NEON=1
endif

LOCAL_CFLAGS += -DHAVE_CONFIG_H

LOCAL_C_INCLUDES := ../include   \
               ../libspeex   \
               ../           \

LOCAL_SRC_FILES := ../libspeex/bits.c      \
           ../libspeex/buffer.c    \
           ../libspeex/cb_search.c \
               ...
           ../libspeex/vq.c        \
           ../libspeex/window.c    \

LOCAL_CFLAGS += -DANDROID

include $(BUILD_STATIC_LIBRARY)

Application.mk

APP_PROJECT_PATH := $(call my-dir)
APP_BUILD_SCRIPT := $(APP_PROJECT_PATH)/Android.mk
APP_STL := stlport_static
STLPORT_FORCE_REBUILD := true
APP_ABI := armeabi-v7a armeabi
APP_OPTIM := release 
APP_PLATFORM :=  android-8

What is wrong? Why does the NDK not compile the library?

Was it helpful?

Solution

I've solved it specifying in the same Android.mk, a module compiled in shared mode that uses the static library compiled before:

Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := speex-static

ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
    LOCAL_CFLAGS += -DHAVE_NEON=1
endif

LOCAL_CFLAGS += -DHAVE_CONFIG_H

LOCAL_C_INCLUDES := ../include   \
               ../libspeex   \
               ../           \

LOCAL_SRC_FILES := ../libspeex/bits.c      \
           ../libspeex/buffer.c    \
           ../libspeex/cb_search.c \
               ...
           ../libspeex/vq.c        \
           ../libspeex/window.c    \

LOCAL_CFLAGS += -DANDROID

include $(BUILD_STATIC_LIBRARY)

include $(CLEAR_VARS)
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
    LOCAL_CFLAGS += -DHAVE_NEON=1
endif
LOCAL_MODULE := speex
LOCAL_STATIC_LIBRARIES := speex-static
LOCAL_CFLAGS += -DANDROID
include $(BUILD_SHARED_LIBRARY)
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top