im very confused with NDK and with OpenSL Im trying to add OpenSL to my project. And have some problems. When i create ndk project- i dont have file Android.mk but i have CMakeList
in tutorials everywhere talks about android.mk where need write one string for implement OpenSL to project.
here my build.graddle(module) file
android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
externalNativeBuild {
cmake {
path 'CMakeLists.txt'
}
}
sourceSets {
main {
jniLibs.srcDirs 'imported-lib/src/', 'more-imported-libs/src/'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:26.+'
}
CMakeList.txt
cmake_minimum_required(VERSION 3.4.1)
add_library( # Specifies the name of the library.
native-lib
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/main/cpp/native-lib.cpp )
# Specifies a path to native header files.
include_directories(src/main/cpp/include/)
# Include libraries needed for native-audio-jni lib
target_link_libraries(native-audio-jni
android
log
OpenSLES)
and a simple test for ndk
#include <jni.h>
#include <string>
extern "C"
JNIEXPORT jstring JNICALL
Java_ndk_test_stringFromJNI(
JNIEnv *env,
jobject /* this */) {
std::string hello = "Hello from C++";
return env->NewStringUTF(hello.c_str());
}
calling function stringFromJNI is ok i see this line in logs. But main question what im doing wrong. How to implement OpenSL without Android.mk
In google.devandroid section its tell
add LOCAL_LDLIBS += -lOpenSLES
to Android.mk
in every tutorial all tells about android.mk. But i dont have this file. Can any help me ?
in example of goolink to example
I suggest adding this to source file or .h file:
I've based my solution around this example: https://android.googlesource.com/platform/system/media/+/bd2fc031926582ee8b0df40673c66dfa4cc45a61/opensles/tests/examples/slesTestRecBuffQueue.cpp
and in the CMakeList.txt: