Building audio processing Little Endian SDK with NDK
Asked Answered
P

1

31

I am trying to use ndk-build to use native code for audio processing from Little Endian in an Android application (I don't have JNI yet).

When I executed ndk-build in jni dir I got ($USER_PATH is path to directory on my computer):

Android NDK: WARNING: Rebuilding libc++ libraries from sources!    
Android NDK: You might want to use $NDK/build/tools/build-cxx-stl.sh --stl=libc++    
Android NDK: in order to build prebuilt versions to speed up your builds!    
Android NDK: ERROR:$USER_PATH/android-ndk-r10/sources/android/compiler-rt/Android.mk:compiler_rt_shared: LOCAL_SRC_FILES points to a missing file    
Android NDK: $USER_PATH/Android/android-ndk-r10/sources/android/compiler-rt/libs/armeabi/libcompiler_rt_shared.so exists  or that its path is correct   
$USER_PATH/android-ndk-r10/build/core/prebuilt-library.mk:45: *** Android NDK: Aborting    .  Stop.

I saw that is because of PREBUILT_STATIC_LIBRARY which points to missing files.

How can I solve this?

Directory structure: enter image description here

There are .mk files:

Android.mk

MY_LOCAL_PATH := $(call my-dir)

ifndef LE_SDK_PATH
    LE_SDK_PATH := $(call my-dir)
endif

include $(MY_LOCAL_PATH)/le_audioio.mk
include $(MY_LOCAL_PATH)/le_utility.mk

LOCAL_PATH := ${MY_LOCAL_PATH}
include $(CLEAR_VARS)

LOCAL_MODULE           := little-endian
LOCAL_STATIC_LIBRARIES := le_audioio le_utility

include $(BUILD_SHARED_LIBRARY)

Application.mk

APP_PLATFORM := android-14
APP_STL      := c++_static
APP_ABI      := armeabi armeabi-v7a x86
APP_OPTIM    := release
APP_CFLAGS   += -g

NDK_TOOLCHAIN_VERSION := clang

le_audioio.mk

ifndef LE_SDK_PATH
    LE_SDK_PATH := $(call my-dir)
endif

LOCAL_PATH:= $(LE_SDK_PATH)

include $(CLEAR_VARS)

LOCAL_MODULE            := le_audioio
LOCAL_EXPORT_C_INCLUDES := $(abspath $(LE_SDK_PATH)/include)
LOCAL_EXPORT_LDLIBS     += -lOpenSLES
ifeq ($(TARGET_ARCH_ABI),x86)
    LOCAL_SRC_FILES     := libs/development/libAudioIO_Android_x86-32_SSSE3.a
else
    ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
        LOCAL_ARM_NEON  := true
        LOCAL_SRC_FILES := libs/development/libAudioIO_Android_ARMv7a_NEON.a
    else
        LOCAL_SRC_FILES := libs/release/libAudioIO_Android_ARMv6_VFP2.a
    endif
endif

include $(PREBUILT_STATIC_LIBRARY)

le_utilityio.mk

ifndef LE_SDK_PATH
    LE_SDK_PATH := $(call my-dir)
endif

LOCAL_PATH:= $(LE_SDK_PATH)

include $(CLEAR_VARS)

LOCAL_MODULE            := le_utility
LOCAL_EXPORT_C_INCLUDES := $(abspath $(LE_SDK_PATH)/include)
LOCAL_EXPORT_LDLIBS     += -landroid -llog
ifeq ($(TARGET_ARCH_ABI),x86)
    LOCAL_SRC_FILES     := libs/development/libUtility_Android_x86-32_SSSE3.a
else
    ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
        LOCAL_ARM_NEON  := true
        LOCAL_SRC_FILES := libs/development/libUtility_Android_ARMv7a_NEON.a
    else
        LOCAL_SRC_FILES     := libs/release/libUtility_Android_ARMv6_VFP2.a
        LOCAL_EXPORT_LDLIBS += -latomic
    endif
endif

include $(PREBUILT_STATIC_LIBRARY)
Pterodactyl answered 21/8, 2014 at 9:37 Comment(2)
I checked that removing NDK_TOOLCHAIN_VERSION := clang and APP_STL := c++_static from Application.mk builds with success.Pterodactyl
It looks like you're mixing the logic needed for shared and static libraries. What do you actually want to use in your application? The current logic specifies BUILD_SHARED_LIBRARY but requests a static version of the C++ stl.Bonkers
E
1

Try this a new solution by Google for audio application.

Eblis answered 1/11, 2018 at 8:9 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.