Unsolved QNetworkRequest not working on qt 5.8 and android 7.0
-
I'm not sure about the behavior when these libraries are missing, but in my opinion modern applications should be able to handle SSL so I suggest to include the libraries anyways.
If you want to avoid having to manually build and provide the SSL libraries for Android, V-Play Engine comes with already bundled SSL libs since version 2.10.0.Best,
GT -
Hi,
I have the same issue in my android app when run on Android 7. The application not uses https, and the request is make by javascript with XMLHttpRequest in a qml component.
The android application crash when start a new request for the remote service.
Why Qt require openssl for http request?
I follow the tip described here: http://doc.qt.io/qt-5/opensslsupport.html, but not work for me.
Any solution for this?
-
I found a solution for this problem with OpenSSL in Android 7.
Create a sh file with the code below and execute in same dir of openssl tar.gz file. The version tested is 1.0.2. The file can be download here: https://www.openssl.org/source/. This script will generate the .so files: libcrypto.so and libssl.so.
#!/bin/sh tar xzvf ~/Downloads/openssl-1.0.2g.tar.gz cd openssl-1.0.2g # path to android ndk folder export NDK=~/qt/android-ndk-r13b $NDK/build/tools/make-standalone-toolchain.sh --platform=android-9 --toolchain=arm-linux-androideabi-4.6 --install-dir=`pwd`/android-toolchain-arm export TOOLCHAIN_PATH=`pwd`/android-toolchain-arm/bin export TOOL=arm-linux-androideabi export NDK_TOOLCHAIN_BASENAME=${TOOLCHAIN_PATH}/${TOOL} export CC=$NDK_TOOLCHAIN_BASENAME-gcc export CXX=$NDK_TOOLCHAIN_BASENAME-g++ export LINK=${CXX} export LD=$NDK_TOOLCHAIN_BASENAME-ld export AR=$NDK_TOOLCHAIN_BASENAME-ar export RANLIB=$NDK_TOOLCHAIN_BASENAME-ranlib export STRIP=$NDK_TOOLCHAIN_BASENAME-strip export ARCH_FLAGS="-mthumb" export ARCH_LINK= export CPPFLAGS=" ${ARCH_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 " export CXXFLAGS=" ${ARCH_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 -frtti -fexceptions " export CFLAGS=" ${ARCH_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 " export LDFLAGS=" ${ARCH_LINK} " # the target of libraries files is armv7 cd ~/Downloads/openssl-1.0.2g && ./Configure android-armv7 shared
After run the script, open the Makefile and execute the step 5 described here: http://doc.qt.io/qt-5/opensslsupport.html. After edit the Makefile, execute the next commands (into openssl extracted folder) to generate the .so files.
make clean && PATH=$TOOLCHAIN_PATH:$PATH make
Now, move the .so files to your project.
To package the .so files into apk, add the below code into .pro file of the project:contains(ANDROID_TARGET_ARCH,arm) { # update the path of the libraries where you put in your project. # I put in: myapp/android/libs/openssl/armeabi-v7a/: ANDROID_EXTRA_LIBS = \ $$PWD/android/libs/openssl/armeabi-v7a/libcrypto.so \ $$PWD/android/libs/openssl/armeabi-v7a/ibssl.so }
-
@Joseneas uups ... just did test running one of my projects moved from 5.7 to 5.8 on a Google Pixel C tablet with Android 7.0
and the same happens here: App is crashingW linker : library "libcrypto.so" ("/system/lib/libcrypto.so") needed or dlopened by "/data/app/org.ekkescorner.tt-2/lib/arm/libQt5Core.so" is not accessible for the namespace "classloader-namespace" - the access is temporarily granted as a workaround for http://b/26394120, note that the access will be removed in future releases of Android. W linker : library "libssl.so" ("/system/lib/libssl.so") needed or dlopened by "/data/app/org.ekkescorner.tt-2/lib/arm/libQt5Core.so" is not accessible for the namespace "classloader-namespace" - the access is temporarily granted as a workaround for http://b/26394120, note that the access will be removed in future releases of Android. W libtimetracker10_te_qt.so: (null):0 ((null)): qt.network.ssl: QSslSocket: cannot resolve CRYPTO_free W libtimetracker10_te_qt.so: (null):0 ((null)): qt.network.ssl: QSslSocket: cannot resolve EVP_CipherFinal W libtimetracker10_te_qt.so: (null):0 ((null)): qt.network.ssl: QSslSocket: cannot resolve SSL_CTX_ctrl W libtimetracker10_te_qt.so: (null):0 ((null)): qt.network.ssl: QSslSocket: cannot resolve SSL_ctrl W libtimetracker10_te_qt.so: (null):0 ((null)): qt.network.ssl: QSslSocket: cannot resolve OPENSSL_add_all_algorithms_noconf W libtimetracker10_te_qt.so: (null):0 ((null)): qt.network.ssl: QSslSocket: cannot resolve OPENSSL_add_all_algorithms_conf W libtimetracker10_te_qt.so: (null):0 ((null)): qt.network.ssl: QSslSocket: cannot resolve EC_get_builtin_curves W libtimetracker10_te_qt.so: (null):0 ((null)): qt.network.ssl: QSslSocket: cannot resolve EC_curve_nist2nid W libtimetracker10_te_qt.so: (null):0 ((null)): qt.network.ssl: QSslSocket: cannot call unresolved function OPENSSL_add_all_algorithms_conf F libc : Fatal signal 11 (SIGSEGV), code 1, fault addr 0x4 in tid 24205 (QtThread)
running same app from Qt 5.7 all works on Android 7
this app only uses http:// -
This post is deleted! -
This post is deleted! -
I'm trying to make it run - see discussion in https://forum.qt.io/topic/76978/android-how-to-install-so-file
-
Hi,
I compiled libcrypt.so and libssl.so (v1.1.0e). But, when i include in my app i have a crash in android 7.
If i put off this .so i can test my app in Android 7 but with this warningW linker : library "libcrypto.so" ("/system/lib/libcrypto.so") needed or dlopened by "/data/app/pe.com.medicalint-1/lib/arm/libQt5Core.so" is not accessible for the namespace "classloader-namespace" - the access is temporarily granted as a workaround for http://b/26394120, note that the access will be removed in future releases of Android.
W linker : library "libssl.so" ("/system/lib/libssl.so") needed or dlopened by "/data/app/pe.com.medicalint-1/lib/arm/libQt5Core.so" is not accessible for the namespace "classloader-namespace" - the access is temporarily granted as a workaround for http://b/26394120, note that the access will be removed in future releases of Android.What can i do for do my App in Android 7?
-
@Tchaumont for me it works. see also here
https://forum.qt.io/topic/77150/qt-5-8-qnam-openssl-crash-openssl_threads
from comments seems to work for others too -
@Tchaumont said in QNetworkRequest not working on qt 5.8 and android 7.0:
i have a crash in android 7
What exactly happens? Error message?
-
@Tchaumont whats NDK version u use?
i think should use for now r10e
[https://github.com/ekke/android-openssl-qt/issues/3](link url)