QNetwork error cuando se utiliza Qt lib con la aplicación JNI Android nativa

Tengo la lib de Qt simple que hace la petición del HTTP como esto:

QNetworkAccessManager networkAccessManager; QNetworkRequest request{QUrl("http://www.google.ru")}; QNetworkReply * reply = networkAccessManager.get(request); ... 

Todo funciona bien cuando lo ejecuto en dispositivos Android ( armeabi-v7a y x86 ) diractly de Qt Creator. Pero quiero usarlo dentro de la aplicación nativa de Android con NDK y JNI . En este caso, sólo funciona en dispositivos armeabi-v7a y con Android desde la versión 6.0. Si ejecuto la aplicación android con esta lib en el dispositivo x86 se bloquea con el siguiente mensaje:

Señal fatal 11 (SIGSEGV) en 0x00000000 (código = 1), subproceso 11830 (itekllc.testjni)

Y ocurre en esta línea de código dentro de mi Qt lib:

 QNetworkReply * reply = networkAccessManager.get(request); 

Este es mi archivo communication.cpp en el proyecto androide nativo:

 #include <jni.h> #include "QCoreApplication" #include "testandroidthreadslib.h" #ifndef _Included_com_navitekllc_testjni_CppWrapper #define _Included_com_navitekllc_testjni_CppWrapper #ifdef __cplusplus extern "C" { #endif JNIEXPORT void JNICALL Java_com_navitekllc_testjni_CppWrapper_testNetwork(JNIEnv *env, jclass type) { TestAndroidThreadsLib testLib; testLib.run(); } #ifdef __cplusplus } #endif #endif 

Este es mi archivo .java para llamar a la función .cpp :

 public class CppWrapper { public static native void testNetwork(); static { System.loadLibrary("communication"); } } 

Este es mi build.gradle experemental gradle archivo:

 apply plugin: 'com.android.model.application' model { repositories { libs(PrebuiltLibraries) { QtStaticLibrary { headers.srcDir file("..PathToLib/TestAndroidThreadsLib").absolutePath binaries.withType(StaticLibraryBinary) { def myStaticLibPath = "src/main/jniLibs/${targetPlatform.getName()}/libTestAndroidThreadsLib.a" staticLibraryFile = file("${myStaticLibPath}") } } QCoreSharedLibrary { binaries.withType(SharedLibraryBinary) { def coreLibPath = "src/main/jniLibs/${targetPlatform.getName()}/libQt5Core.so" sharedLibraryFile = file("${coreLibPath}") } } QNetSharedLibrary { binaries.withType(SharedLibraryBinary) { def networkLibPath = "src/main/jniLibs/${targetPlatform.getName()}/libQt5Network.so" sharedLibraryFile = file("${networkLibPath}") } } } } android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { minSdkVersion.apiLevel 18 targetSdkVersion.apiLevel 21 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles.add(file('proguard-rules.pro')) } } sources { main { jni { dependencies { library "QtStaticLibrary" linkage "static" library "QCoreSharedLibrary" linkage "shared" library "QNetSharedLibrary" linkage "shared" } } } } ndk { moduleName = "communication" cppFlags.add("-std=c++11") stl "gnustl_shared" cppFlags.add('-I' + file("/Volumes/Transcend/Qt/5.7/android_armv7/include").absolutePath) cppFlags.add('-I' + file("/Volumes/Transcend/Qt/5.7/android_armv7/include/QtCore").absolutePath) abiFilters.addAll([ "x86", "armeabi-v7a" ]) } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:24.2.1' } 

Sería genial si alguien le dijera lo que estoy haciendo mal y por qué el error en esta línea de código:

 QNetworkReply * reply = networkAccessManager.get(request); 

Sólo se produce en los dispositivos x86 y en dispositivos con Android versión menos de 6,0 y sólo desde el proyecto nativo de Android (de QtCreator todo funciona sin errores). Gracias por la ayuda.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.