Bonjour à tous !
Après plusieurs heures de recherche dans les confins d'Internet...
Après moultes tentatives qui ont échouées...
À ce jour, il est impossible de trouver un tutoriel complet et fonctionnel (j'ai testé, en vain). Vous trouverez ci-après, mon tutoriel fonctionnel (testé plusieurs fois). 
Je me base sur la dernière version de Qt à ce jour, soit la 5.7.0-1. Je n'ai pas testé avec la 5.6.0-1, mais il ne devrait pas avoir de problème.
Tout d'abord, pour ceux qui ne l'ont pas, télécharger "Notepad++". Il facilite la vie d'un informaticien dans beaucoup de domaine. 
LE TUTORIEL
1) Télécharger et installer CMake, version 3.5.2 pour Windows (MSI).
2) Télécharger Android NDK. Décompresser le contenu dans "d:\Android\Android-ndk", de sorte que "ndk-build.cmd" soit dans "d:\Android\Android-ndk\ndk-build.cmd".
Nota : vous pouvez le décompresser où vous le souhaitez, cependant, n'oubliez pas de modifier les données correspondantes dans ce tutoriel.
3) Télécharger et installer MinGW. Cochez le plus de d'éléments possibles.

4) Installer les Sources de Qt à l'aide de l'outil de maintenance de Qt (C:\Qt\MaintenanceTool.exe) :
a. Sélectionner "Add or remove components" puis "Next".
b. Dans l'arborescence, cocher "Sources" dans "Qt" - "Qt 5.7".
c. Cliquer sur "Next".
d. Une fois l'installation terminée, quitter l'outil de maintenance.

5) Lancer MSYS (C:\MinGW\msys\1.0\msys.bat).

6) Copier-coller ceci dans la console pour récupérer et installer Wget :
/c/mingw/bin/mingw-get install msys-wget-bin
7) Création du répertoire de travail, puis y aller :
1 2
| mkdir /d/Projects/AndroidMySQL
cd /d/Projects/AndroidMySQL |
8) Récupération et extraction de MariaDB :
1 2
| wget https://downloads.mariadb.org/interstitial/connector-c-3.0.0/mariadb-connector-c-3.0.0-alpha-src.tar.gz --no-check-certificate
tar -xzvf mariadb-connector-c-3.0.0-alpha-src.tar.gz |
9) Récupération et extraction de LibIconv :
1 2
| wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz --no-check-certificate
tar -xvzf libiconv-1.14.tar.gz |
10) Récupération et extraction de OpenSSL :
1 2
| wget -c http://www.openssl.org/source/openssl-1.0.1h.tar.gz --no-check-certificate
tar -xvzf openssl-1.0.1h.tar.gz |
11) Mise en place des variables globales :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| export PATH="$PATH:/c/mingw/bin:/c/Program Files (x86)/CMake/bin"
export ANDROID_NDK_ROOT=/d/Android/Android-ndk
export SR="$ANDROID_NDK_ROOT"/platforms/android-19/arch-arm/usr
export BR="$ANDROID_NDK_ROOT"/toolchains/arm-linux-androideabi-4.9/prebuilt/windows/bin/arm-linux-androideabi-
export CPP="$BR"cpp
export AR="$BR"ar
export STRIP="$BR"strip
export RANLIB="$BR"ranlib
export LINKER="$BR"ld
export OBJDUMP="$BR"objdump
export CC="$BR"gcc
export CFLAGS="--sysroot=$SR"
export CPPFLAGS="$CFLAGS"
export C_INCLUDE_PATH=$SR/include
export ANDROID_DEV=$SR/usr
export MAKEDEPPROG="$CC -M" |
12) Préparation de Iconv :
1 2 3 4
| cd libiconv-1.14
./configure --host=arm --prefix=$SR/usr --with-sysroot=$SR
make
make install |
13) Préparation d'OpenSSL :
1 2 3 4 5 6
| cd ../openssl-1.0.1h
CC="$CC -march=armv7-a -mfloat-abi=softfp"
./Configure android-armv7 --prefix=$SR/usr no-asm
make
make install
make install_sw |
14) Modifier "D:\Projects\AndroidMySQL\mariadb-connector-c-3.0.0-alpha-src\unittest\libmariadb\thread.c" :
Remplacer :
pthread_mutex_t LOCK_test;
Par:
Et remplacer :
pthread_t threads[THREAD_NUM];
Par :
void * threads[THREAD_NUM];
15) Modifier "D:\Projects\AndroidMySQL\mariadb-connector-c-3.0.0-alpha-src\libmariadb\CMakeLists.txt" :
Remplacer :
SOVERSION ${CPACK_PACKAGE_VERSION_MAJOR})
Par :
16) Modifier "D:\Projects\AndroidMySQL\mariadb-connector-c-3.0.0-alpha-src\libmariadb\mf_pack.c" :
Remplacer :
Par :
#if defined(HAVE_GETPWNAM) && defined(HAVE_GETPWENT)
17) Modifier "D:\Projects\AndroidMySQL\mariadb-connector-c-3.0.0-alpha-src\include\my_global.h" :
Ajouter après :
1 2
| #ifndef _global_h
#define _global_h |
Ceci :
1 2 3
| #ifndef ushort
#define ushort uint16
#endif |
18) Préparation et assemblage :
1 2 3 4
| cd ../mariadb-connector-c-3.0.0-alpha-src
mkdir build
cd build
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_AR="$BR"ar.exe -DCMAKE_C_COMPILER="$BR"gcc.exe -DCMAKE_C_FLAGS=--sysroot=$SR -DCMAKE_LINKER="$BR"ld.exe -DCMAKE_RANLIB="$BR"ranlib.exe -DCMAKE_STRIP="$BR"strip.exe -DCMAKE_SYSTEM_NAME=Linux -DICONV_INCLUDE_DIR="$SR/usr/include" -DICONV_LIBRARIES="$SR/usr/lib/libiconv.a" -DOPENSSL_ROOT_DIR="$SR/usr/lib" -DOPENSSL_ROOT_DIR="../openssl-1.0.1h" ../ |
19) Faire un 1er :
20) La compilation va s'arrêter avec une erreur à 54%, faire :
1 2 3
| cp libmariadb/libmariadbclient.a libmariadb/libmysqlclient.a
cp libmariadb/libmariadbclient.a libmariadb/libmysqlclient_r.a
make |
21) La compilation va de nouveau s'arrêter à 56%, faire :
1 2 3
| cp libmariadb/libmariadb.so libmariadb/libmysqlclient.so
cp libmariadb/libmariadb.so libmariadb/libmysqlclient_r.so
make |
22) Définir et copier vers le Android NDK :
1 2 3 4 5
| make install
mkdir "$SR/usr/lib/mariadb"
mkdir "$SR/usr/include/mariadb/"
cp libmariadb/*.{a,so} "$SR/usr/lib/mariadb/"
cp ../include/* "$SR/usr/include/mariadb/" |
23) Copier les fichiers suivants dans "D:\Android\Android-ndk\platforms\android-19\arch-arm\usr\usr\lib\mariadb" :
1 2 3
| "D:\Projects\AndroidMySQL\openssl-1.0.1h\libssl.a"
"D:\Projects\AndroidMySQL\openssl-1.0.1h\libcrypto.a"
"D:\Projects\AndroidMySQL\libiconv-1.14\lib\.libs\libiconv.a" |
24) Copier "libmariadb.so.so" présent dans "D:\Projects\AndroidMySQL\mariadb-connector-c-3.0.0-alpha-src\build\libmariadb" dans le répertoire "android\libs\armeabi-v7a" de votre projet Qt.
25) Ajouter à votre ".pro" de votre projet Qt :
1 2 3 4
| android {
LIBS += -L$$PWD/android/libs/armeabi-v7a
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
} |
26) Compilation du plugin MySQL Android pour Qt :
a. Ouvrir "c:\Qt\5.7\Src\qtbase\src\plugins\sqldrivers\mysql\mysql.pro" dans QtCreator.
b. Dans "Projets", ajouter le kit "Android for armeabi-v7a".
c. Décocher "Shadow Build".
d. Mettre le projet en "Release".
e. Dans "Étapes de compilation" - "qmake", cliquer sur "Détails".
f. Dans "Arguments supplémentaires", mettre :
"INCLUDEPATH+=d:/Android/Android-ndk/platforms/android-19/arch-arm/usr/usr/include/mariadb" "LIBS+=-Ld:/Android/Android-ndk/platforms/android-19/arch-arm/usr/usr/lib/mariadb -lmariadbclient -lssl -lcrypto -liconv" -o Makefile
g. Faire "Nettoyer", "Exécuter qmake" puis "Compilation".

27) Installation du plugin MySQL Android pour Qt :
Copier le fichier "libqsqlmysql.so" créé dans "C:\Qt\5.7\Src\qtbase\plugins\sqldrivers" vers "C:\Qt\5.7\android_armv7\plugins\sqldrivers".
28) Pour utiliser le MySQL en QML :
a. Télécharger "QmlSql" de JosephMillsAtWork.
b. Ouvrir "QmlSql.pro" dans QtCreator.
c. Dans "Projets", ajouter le kit "Android for armeabi-v7a".
d. Décocher "Shadow Build".
e. Mettre le projet en "Release".
f. Faire "Nettoyer", "Exécuter qmake" puis "Compilation".
g. Copier "libQmlSql.so" et "qmldir" présents dans "(Répertoire contenant le projet QmlSQL)\android-build\libs\armeabi-v7a" vers "C:\Qt\5.7\android_armv7\qml\QmlSql".
29) BRAVO ! Vous avez réussi !

Vous l'aurez compris, je me permets de mettre ce tutoriel en ligne car il n'est pas facile de compiler un plugin Android depuis Windows (contrairement à ce que certaines personnes indiquent). En effet, je ne suis pas un professionnel : j'ai dû analyser, comprendre, rechercher pour que le processus fonctionne jusqu'à la fin. Les autres tutoriels déjà présents sur le Web ne fonctionnent pas correctement, il y a toujours un problème. Ma recherche d'une solution fonctionnelle m'a prit plusieurs jours... 
Bon courage et merci pour cette lecture. 
Bien cordialement.
Partager