线程导致android JNI中的SIGABRT
我正试图从线程导致android JNI中的SIGABRT,android,c++,multithreading,Android,C++,Multithreading,我正试图从android中的jni创建一个简单的std:thread。但是我的应用程序由于以下错误而崩溃 A/libc: Fatal signal 6 (SIGABRT) at 0x00005606 (code=-6), thread 22059 JNI资料来源: void threadRun(){ sleep(5); } JNIEXPORT void JNICALL Java_com_helloworld_JNIWrapper_init (JNIEnv *env, jobjec
android
中的jni
创建一个简单的std:thread
。但是我的应用程序由于以下错误而崩溃
A/libc: Fatal signal 6 (SIGABRT) at 0x00005606 (code=-6), thread 22059
JNI资料来源:
void threadRun(){
sleep(5);
}
JNIEXPORT void JNICALL Java_com_helloworld_JNIWrapper_init
(JNIEnv *env, jobject obj)
{
thread th(threadRun);
th.join(); //or th.detach() doesn't work either
}
Application.mk:
APP_STL := gnustl_static
APP_CPPFLAGS += -std=c++11
我从主UI线程中的活动调用了init
方法。从后台线程来看,它也不起作用。好吧,它似乎是一个“众所周知的,未公开”的漏洞,在当前的NDK版本中还没有修复(在撰写本文时,我是r10d)
这个解决方案似乎是用g++来编译的。为此,只需在gradle脚本中添加以下行:
externalNativeBuild {
cmake {
arguments "-DANDROID_TOOLCHAIN=gcc"
}
}
一些链接: