W
WXQТам. 1, 2018, 8:34 Т.Ж.

MySQL for Qt Android


Добрый день все пользователям evileg.com
OS windows 7









Qt 5.10.1 for Android



Столкнулся с проблемой при установке mysql под qt android. Использовал 2 вариант в статьи
https://wiki.qt.io/Build_Qt_5_MySQL_Plugin_for_Android
Модифицировал файл под свои данные. Сохранил и скинул в папку build но  MySQL не работает на Андроиде. При компиляции выводит ошибку
W/libtest.so(29684): (null):0 ((null)): QSqlDatabase: QMYSQL driver not loaded 
W/libtest.so(29684): (null):0 ((null)): QSqlDatabase: available drivers: QSQLITE 
W/libtest.so(29684): (null):0 ((null)): QSqlQuery::exec: database not open
Файл который был собран по 2 варианту выглядет так.



#!/bin/bash

# Based on http://qt-project.org/wiki/Build_Qt5_mysql_plugin_for_Android

export ANDROID_NDK_ROOT="$HOME/.Qt/android-ndk-r17/"
export QT_ROOT="$HOME/.Qt510/5.10.1/"

SR="$ANDROID_NDK_ROOT/platforms/android-17/arch-arm/"
BR="$ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/windows/bin/arm-linux-androideabi-"

here="$(dirname "$0")"
find "$SR" > "$here/rootfs_files_before.txt" || exit 1
checkChanges() {
        find "$SR" > "$here/rootfs_files_after.txt" || exit 1
        echo "Changes:"
        diff -u "$here/rootfs_files_before.txt" "$here/rootfs_files_after.txt"
}
trap checkChanges EXIT

# OpenSSL
#pkg=openssl-1.0.1f.tar.gz
#pkg=openssl-1.0.1e.tar.gz
pkg=openssl-1.0.2d.tar.gz
dir=$(basename $pkg .tar.gz)

if [ ! -d $dir ]; then
        wget -c http://www.openssl.org/source/$pkg
        tar -xf $pkg || exit 1
fi

pushd $dir
        RANLIB="$BR"ranlib CC="$BR"gcc ./Configure android-armv7 --prefix=$SR/usr
        ANDROID_DEV=$SR/usr make #|| exit 1
        ANDROID_DEV=$SR/usr make || exit 1
        make install_sw || exit 1
popd


# libiconv
pkg=libiconv-1.14.tar.gz
dir=$(basename $pkg .tar.gz)

if [ ! -d $dir ]; then
        wget -c http://ftp.gnu.org/pub/gnu/libiconv/$pkg
        tar -xf $pkg || exit 1
fi

pushd $dir
        STRIP="$BR"strip RANLIB="$BR"ranlib OBJDUMP="$BR"objdump AR="$BR"ar CC="$BR"gcc CFLAGS=--sysroot=$SR CPP="$BR"cpp CPPFLAGS=$CFLAGS ./configure --host=arm --prefix=$SR/usr --with-sysroot=$SR
        make || exit 1
        make install || exit 1
popd


# mariadbclient

version=2.0.0
pkg=mariadb_client-$version-src.tar.gz
url=https://downloads.mariadb.org/f/client-native-$version/src/$pkg

# FIXME: This one fails to build, linker errors
#version=2.1.0
#pkg=mariadb-connector-c-$version-src.tar.gz
#url=https://downloads.mariadb.org/f/connector-c-$version/source-tgz/$pkg

dir=$(basename $pkg .tar.gz)
if [ ! -d $dir ]; then
        wget -c $url
        tar -xf $pkg || exit 1
fi

pushd $dir
        sed -i -e "s|ADD_SUBDIRECTORY(unittest/libmariadb)|#ADD_SUBDIRECTORY(unittest/libmariadb)|" CMakeLists.txt
        sed -i -e "N; s|typedef unsigned short ushort;\n#endif|#endif\ntypedef unsigned short ushort;|" include/my_global.h
        sed -i -e "N; s|SET_TARGET_PROPERTIES(libmariadb PROPERTIES VERSION.*||" libmariadb/CMakeLists.txt
        sed -i -e "N; s|SOVERSION \${CPACK_PACKAGE_VERSION_MAJOR})||" libmariadb/CMakeLists.txt # Pig disgusting: the previous multiline thingie should've done it
        sed -i -e "N; s|\${CPACK_PACKAGE_VERSION_MAJOR}||" libmariadb/CMakeLists.txt # Pig disgusting: what the fuck
        mkdir build
        pushd build
        PKG_CONFIG_PATH=$SR/usr/lib/pkgconfig cmake \
		-DCMAKE_BUILD_TYPE=Release \
		-DCMAKE_C_FLAGS=--sysroot="$SR" \
		-DCMAKE_INSTALL_PREFIX="$SR/usr" \
		-DCMAKE_C_COMPILER="$BR"gcc \
		-DCMAKE_LINKER="$BR"ld \
		-DCMAKE_AR="$BR"ar \
		-DCMAKE_NM="$BR"nm \
		-DCMAKE_OBJCOPY="$BR"objcopy \
		-DCMAKE_OBJDUMP="$BR"objdump \
		-DCMAKE_RANLIB="$BR"ranlib \
		-DCMAKE_STRIP="$BR"strip \
		-DICONV_INCLUDE_DIR="$SR/usr/include" \
		-DICONV_LIBRARIES="$SR/usr/lib/libiconv.a" \
		-DWITH_EXTERNAL_ZLIB=ON \
		-DZLIB_INCLUDE_DIR="$SR/usr/include" \
		-DZLIB_LIBRARY="$SR/usr/lib/libz.so" ../ || exit 1
        make install || exit 1
        popd

        # ???
        pwd
        cp build/libmariadb/*.{a,so} "$SR/usr/lib/mariadb/" || exit 1
popd


# qt
qmake="$QT_ROOT/android_armv7/bin/qmake"
[ ! -f "$qmake" ] && { echo "Could not find qmake in '$qmake'"; exit 1; }
[ ! -x "$qmake" ] && { echo "Qmake is not executable in '$qmake'"; exit 1; }
qtVersion=$(qmake -query QT_VERSION)

#pkg=qt-everywhere-opensource-src-$qtVersion.tar.gz
#pkg=qtbase-opensource-src-$qtVersion.tar.gz
pkg=qtbase-opensource-src-5.5.1.tar.gz
dir=$(basename $pkg .tar.gz)

if [ ! -d $dir ]; then
#        wget -c http://download.qt.io/official_releases/qt/${qtVersion%.*}/$qtVersion/submodules/$pkg
#        wget -c http://download.qt.io/official_releases/qt/${qtVersion%.*}/$qtVersion/$pkg
        wget -c http://download.qt.io/official_releases/qt/5.5/5.5.1/submodules/qtbase-opensource-src-5.5.1.tar.gz
        tar -xf $pkg || exit 1
fi

pushd $dir/src/plugins/sqldrivers/mysql/
        $qmake "INCLUDEPATH+=$SR/usr/include/mariadb" "LIBS+=$SR/usr/lib/mariadb/libmariadbclient.a $SR/usr/lib/libssl.a $SR/usr/lib/libcrypto.a $SR/usr/lib/libiconv.a" "LIBPATH+=$SR/usr/lib/mariadb" -o Makefile mysql.pro
        make || exit 1
        make install || exit 1
popd


echo
echo "BOOYAH!!!"
echo

Помогите пожалуйста буду очень благодарен.




Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

5
alex_lip
  • Там. 2, 2018, 9:54 Т.Ж.

Разработка Qt-приложения с доступом к MySQL под Android

https://habr.com/post/134502/



    W
    • Там. 2, 2018, 9:59 Т.Ж.

    Спасибо за отклик. Я пытался собрать с помощи этой статьи но не нашел в фале на которую автор дает ссылку это текст

    1. В строке set( ANDROID_NDK_DEFAULT_SEARCH_PATH /path/to/android-ndk ) указать путь, по которому расположен Android-ndk.
    2. В строке set( ANDROID_NDK_TOOLCHAIN_DEFAULT_SEARCH_PATH /path/to/toolchain ) указать путь, по которому расположен набор инструментов сборки.
    
      W
      • Там. 2, 2018, 9:59 Т.Ж.

      Спасибо за отклик. Я пытался собрать с помощи этой статьи но не нашел в фале на которую автор дает ссылку это текст

      1. В строке set( ANDROID_NDK_DEFAULT_SEARCH_PATH /path/to/android-ndk ) указать путь, по которому расположен Android-ndk.
      2. В строке set( ANDROID_NDK_TOOLCHAIN_DEFAULT_SEARCH_PATH /path/to/toolchain ) указать путь, по которому расположен набор инструментов сборки.
      
        alex_lip
        • Там. 2, 2018, 10:31 Т.Ж.
        • (өңделген)

        насколько я помню - там смысл в том, чтобы откомпилять драйвер MySql из исходников. В и-нете  есть еще статьи на эту тему.  Хотя могу ошибиться.

        Ну да - вы же сами используете mariadb (хотя это чуть-чуть не MySql)

         $qmake "INCLUDEPATH+=$SR/usr/include/mariadb"

          W
          • Там. 2, 2018, 10:59 Т.Ж.

          Нашёл ещё одну статью, шанс по ней делаю. Ошибки есть, пытаюсь исправить. Если получится напишу статью


            Пікірлер

            Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
            Кіріңіз немесе Тіркеліңіз
            AD

            C++ - Тест 004. Указатели, Массивы и Циклы

            • Нәтиже:50ұпай,
            • Бағалау ұпайлары-4
            m
            • molni99
            • Қаз. 26, 2024, 1:37 Т.Ж.

            C++ - Тест 004. Указатели, Массивы и Циклы

            • Нәтиже:80ұпай,
            • Бағалау ұпайлары4
            m
            • molni99
            • Қаз. 26, 2024, 1:29 Т.Ж.

            C++ - Тест 004. Указатели, Массивы и Циклы

            • Нәтиже:20ұпай,
            • Бағалау ұпайлары-10
            Соңғы пікірлер
            ИМ
            Игорь МаксимовҚар. 22, 2024, 11:51 Т.Ж.
            Django - Оқулық 017. Теңшелген Django кіру беті Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
            Evgenii Legotckoi
            Evgenii LegotckoiҚаз. 31, 2024, 2:37 Т.Қ.
            Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
            A
            ALO1ZEҚаз. 19, 2024, 8:19 Т.Ж.
            Qt Creator көмегімен fb3 файл оқу құралы Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
            ИМ
            Игорь МаксимовҚаз. 5, 2024, 7:51 Т.Ж.
            Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
            d
            dblas5Шілде 5, 2024, 11:02 Т.Ж.
            QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
            Енді форумда талқылаңыз
            m
            moogoҚар. 22, 2024, 7:17 Т.Ж.
            Mosquito Spray System Effective Mosquito Systems for Backyard | Eco-Friendly Misting Control Device & Repellent Spray - Moogo ; Upgrade your backyard with our mosquito-repellent device! Our misters conce…
            Evgenii Legotckoi
            Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
            добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
            t
            tonypeachey1Қар. 15, 2024, 6:04 Т.Ж.
            google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
            NSProject
            NSProjectМаусым 4, 2022, 3:49 Т.Ж.
            Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…

            Бізді әлеуметтік желілерде бақылаңыз