将OpenSL添加到Android
问题描述:
即时通讯与NDK和OpenSL 我很困惑我试图将OpenSL添加到我的项目。并有一些问题。当我创建ndk项目 - 我没有文件Android.mk 但我有CMakeList将OpenSL添加到Android
在教程处处谈论android.mk在哪里需要写一个字符串实现OpenSL的项目。
这里我build.graddle(模块)文件
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)
和一个简单的测试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());
}
调用函数stringFromJNI是好的,我看到这条线在日志中。 但主要问题什么即时做错了。如何在没有Android.mk
实施OpenSL在google.devandroid部分其告诉 添加LOCAL_LDLIBS += -lOpenSLES
在每一个教程的所有讲述android.mk到的Android.mk 。但我没有这个文件。任何帮助我吗? 例如咕link to example
答
在我建议增加这源文件或h文件:
#include "OpenSLES.h"
#include "OpenSLES_Android.h"
#include "OpenSLES_AndroidConfiguration.h"
,并在CMakeList。 txt:
target_link_libraries(
android
OpenSLES)
这看起来很适合我。你看到什么错误? –
我发现错误我有cpp文件native-lib.cpp,但宣布native-audio-jni – Peter