How to create QCoreApplication instance in a Qt library with JNI methods for Android java native app?
-
I need develop a Qt library with JNI methods which called by Android java native app. In these JNI methods I need use QBluetooth module to communicate with other bluetooth devices.
Now I create a shared library project, and then I declare class T inherit from class QThread. In run(), I create a QCoreApplication instance and call exec().
My codes as below.void run() override { int argc = 1; char *argv[1]; argv[0] = "name"; QCoreApplication app(argc, argv); app.exec(); }
In JNI method:
T *t = NULL; JNIEXPORT jboolean JNICALL Jni_init (JNIEnv *env, jobject jobj) { t = new T(); t->start(); return true; }
In .pro file, if like "QT += core", it works fine with a warning: "QApplication was not
created in main() thread". But if like "QT += core bluetooth", it crashed with an error "libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 24403 (QThread)".I'm beginner with Qt, what should I do? Please help me.
-
I solved this problem, after I read this post.(https://microscopictopic.wordpress.com/2015/01/15/using-qt-instead-of-the-android-ndk/). And I found the similar solution which wrote in Chinese.(http://blog.csdn.net/promotergmy/article/details/70941649)