QMYSQL working on Windows and Mac but not Android
-
@LeeH
you can use qputenv("QT_DEBUG_PLUGINS", "1") before creating a QApplication instance and check the output. It might give some hints what is failing.IIRC the mysql plugin also links against mysql lib. So did you also deploy this one?
@raven-worx Hi, I put:
qDebug() << qputenv("QT_DEBUG_PLUGINS", "1"); QApplication app(argc, argv);
and in the android log it return 'true'
... D : ..\test\main.cpp:31 (int main(int, char**)): true ...
Is this what you meant? Is it doing what it's supposed to? Did I make a mistake?
' -
@raven-worx Hi, I put:
qDebug() << qputenv("QT_DEBUG_PLUGINS", "1"); QApplication app(argc, argv);
and in the android log it return 'true'
... D : ..\test\main.cpp:31 (int main(int, char**)): true ...
Is this what you meant? Is it doing what it's supposed to? Did I make a mistake?
'@LeeH said in QMYSQL working on Windows and Mac but not Android:
Is this what you meant?
no, not what this command returns.
With this env variable set Qt should print some debug info of the plugin loading process. -
@LeeH said in QMYSQL working on Windows and Mac but not Android:
Is this what you meant?
no, not what this command returns.
With this env variable set Qt should print some debug info of the plugin loading process.@raven-worx ok - but there is a lot of information here, and I don't know what I'm looking for, I can't see anything about debug for plugins.
-
@raven-worx Hi, I think I've managed to find the additional info that 'qputenv("QT_DEBUG_PLUGINS", "1");' provides. I hope it's what you meant but here it is:
W libtest.so: (null):0 ((null)): Found metadata in lib /data/data/org.qtproject.example.test/qt-reserved-files/plugins/sqldrivers/libqsqlite.so, metadata= W libtest.so: { W libtest.so: "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface", W libtest.so: "MetaData": { W libtest.so: "Keys": [ W libtest.so: "QSQLITE" W libtest.so: ] W libtest.so: }, W libtest.so: "className": "QSQLiteDriverPlugin", W libtest.so: "debug": false, W libtest.so: "version": 329985 W libtest.so: }
Thanks
-
Hi,
It confirms that only the SQLite plugin is available for android.
IIRC, you can now find more information about how to use QtWidget and custom plugins altogether.
-
Hi,
It confirms that only the SQLite plugin is available for android.
IIRC, you can now find more information about how to use QtWidget and custom plugins altogether.
@SGaist Hi, thanks for your reply. I am really stuck and confused here because as I mentioned in earlier post I did not need to build the android driver seperately before, I just installed mysql software from their site and loaded the windows mysql driver and mysql worked from windows and android perfectly, Might sound silly but I've tried uninstalling and reinstalling mysql community software in a hope to try to replicate what I did before. but no luck. If I do need to build it manually this time, then the info here: https://wiki.qt.io/Build_Qt_5_MySQL_Plugin_for_Android (I assume I need option 3) but is even more confusing at this moment because option 3 appears to be incomplete. What can I do? Thanks.
-
Then please, show that earlier version that worked. Oracle doesn't provide any official driver for Android otherwise the Qt SDK would be offered with that plugin already built.
Option 3 is not incomplete, it's not there as it's written it's a stub.
-
Then please, show that earlier version that worked. Oracle doesn't provide any official driver for Android otherwise the Qt SDK would be offered with that plugin already built.
Option 3 is not incomplete, it's not there as it's written it's a stub.
@SGaist Hi again, sorry not earlier version of mysql server community software as that was and is 5.7. I meant Qt version 5.8 is when everything just worked, so Ive been back and forth between Qt 5.8 and 5.9.1. However when I have returned to Qt 5.8 android dosen't build at all, there are no sdk's available in my android build apk area even though they are installed. I also have sdk tools 25.2.5. But in Qt 5.9.1 These problems don't exist and android builds fine, but complains about the mysql driver... I'm loosing my mind!
-
I thought I did something wrong but after correcting that it didn't make a difference... Anyway I have accepted that how it worked before is gone , so I need to build it myself. I have now got MSYS installed and that appears to work:
MSYS 1.0.11
MSYS DTK 1.0
MSYS Core 1.0.11I am now trying to work through option 2 https://wiki.qt.io/Build_Qt_5_MySQL_Plugin_for_Android. Before running the script, I edit these lines:
from
output_dir="libmariadb_so_output" build_dir="build_libmariadb_temp" export ANDROID_NDK_ROOT="/d/SDKs/Android/ndk-bundle" export QT_ROOT="/d/SDKs/Qt/5.7" SR="$ANDROID_NDK_ROOT/platforms/android-17/arch-arm/" BR="$ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi- 4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-"
to
output_dir="/c/android_output" build_dir="build_libmariadb_temp" export ANDROID_NDK_ROOT="/c/android-ndk-r15b" export QT_ROOT="/c/Qt/5.9" SR="$ANDROID_NDK_ROOT/platforms/android-21/arch-arm" BR="$ANDROID_NDK_ROOT/toolchains/aarch64-linux-android-4.9/prebuilt/windows/bin/aarch64-linux-android-gcc-4.9"
I leave everything else as it is then run the script. At the end I get:
sh: !": event not found
Then check in the output directory I set for the .so file and file is not there. I have never used MSYS before, I'm just trying to follow steps on wiki page option 2... thanks
-
Like I already wrote, no Qt release was provided with MySQL driver for Android since there's no official client library for that platform.
As for the error you got, it seems related to the sh interpreter, you should look up for that.
-
Like I already wrote, no Qt release was provided with MySQL driver for Android since there's no official client library for that platform.
As for the error you got, it seems related to the sh interpreter, you should look up for that.