Название: QSQLCIPHER на android
Отправлено: GNU Dimarik от Октябрь 08, 2014, 22:49
Всем привет, вот какая беда: собрал QSQLCIPHER для андроид, собралось с небольшими плясками с бубном, но когда пытаюсь использовать драйвер, то вот какая картинка:
D/Qt ( 3130): ../chipher_example/mainwindow.cpp:13 (MainWindow::MainWindow(QWidget*)): ("QSQLCIPHER", "QSQLITE") W/Qt ( 3130): kernel/qsqldatabase.cpp:789 (void QSqlDatabasePrivate::init(const QString&)): QSqlDatabase: QSQLCIPHER driver not loaded W/Qt ( 3130): kernel/qsqldatabase.cpp:790 (void QSqlDatabasePrivate::init(const QString&)): QSqlDatabase: available drivers: QSQLCIPHER QSQLITE
Т.е. в списке драйверов он есть, но использовать не получается, либы используемые при сборке добавил в pro файл через LIBS. Что я делаю не так?
Название: Re: QSQLCIPHER на android
Отправлено: GNU Dimarik от Октябрь 11, 2014, 01:12
Исправил. Скачал бинарии SQLCipherforAndroidv2.2.2, думаю будет не трудно нагуглить, далее перебилдил драйвер с ними добавив в INCLUDEPATH qt5-sqlcipher путь к sqlite3 (для sqlite3.h), слинковал с sqlcipher_android, вот полный файл проекта: # # Build SqlCipher as a SQL driver plugin for Qt 5 # # Simon Knopp, Feb 2014 # INCLUDEPATH += /home/dmitry/etc/src/sqlite-amalgamation-3080600 LIBS += -L/home/dmitry/etc/projects/chipher_example/SQLCipherforAndroidv2.2.2/libs/armeabi SQLCIPHER_CONFIGURE = --enable-tempstore=yes \ --disable-tcl \ CFLAGS="-DSQLITE_HAS_CODEC" \ LDFLAGS="-lcrypto"
SQLITE_DEFINES = SQLITE_OMIT_LOAD_EXTENSION SQLITE_OMIT_COMPLETE \ SQLITE_ENABLE_FTS3 SQLITE_ENABLE_FTS3_PARENTHESIS \ SQLITE_ENABLE_RTREE
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
TARGET = qsqlcipher
isEmpty(QT_SRCDIR):QT_SRCDIR = qtbase
DRIVER_SRCDIR = $$QT_SRCDIR/src/sql/drivers/sqlite PLUGIN_SRCDIR = $$QT_SRCDIR/src/plugins/sqldrivers
!exists($$DRIVER_SRCDIR) { error("Could not find Qt source in" $$QT_SRCDIR/src \ ": You need to update your git submodules or set QT_SRCDIR = /path/to/qtbase in .qmake.conf") }
INCLUDEPATH += $$DRIVER_SRCDIR
SOURCES = smain.cpp OTHER_FILES += qsqlcipher.json
# Use Qt's SQLite driver for most of the implementation HEADERS += $$DRIVER_SRCDIR/qsql_sqlite_p.h SOURCES += $$DRIVER_SRCDIR/qsql_sqlite.cpp
# Don't install in the system-wide plugins directory CONFIG += force_independent
!system-sqlite:!contains(LIBS, .*sqlite3.*) { CONFIG(release, debug|release):DEFINES *= NDEBUG DEFINES += $$SQLITE_DEFINES !contains(CONFIG, largefile):DEFINES += SQLITE_DISABLE_LFS INCLUDEPATH += $$OUT_PWD/include LIBS += -L$$OUT_PWD/lib -lsqlcipher_android #-lcrypto QMAKE_RPATHDIR += $$OUT_PWD/lib } else { LIBS *= $$QT_LFLAGS_SQLITE QMAKE_CXXFLAGS *= $$QT_CFLAGS_SQLITE }
PLUGIN_CLASS_NAME = QSQLCipherDriverPlugin include($$PLUGIN_SRCDIR/qsqldriverbase.pri)
# Configure sqlcipher config_sqlcipher.target = $$PWD/sqlcipher/Makefile config_sqlcipher.commands = cd $$PWD/sqlcipher && \ ./configure $$SQLCIPHER_CONFIGURE \ --prefix=$$OUT_PWD
# Build sqlcipher sqlcipher.target = $$OUT_PWD/lib sqlcipher.commands = $(MAKE) -C $$PWD/sqlcipher install sqlcipher.depends = config_sqlcipher
# Configure and build sqlcipher before building the plugin QMAKE_EXTRA_TARGETS += config_sqlcipher sqlcipher PRE_TARGETDEPS += $$sqlcipher.target
Вот pro файл тестового проекта как и что я деплоил: #------------------------------------------------- # # Project created by QtCreator 2014-10-08T20:58:31 # #-------------------------------------------------
QT += core gui sql
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = chipher_example TEMPLATE = app
SOURCES += main.cpp\ mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
CONFIG += mobility MOBILITY =
LIBS += -L$$PWD/SQLCipherforAndroidv2.2.2/libs/armeabi -lsqlcipher_android INCLUDEPATH += ./include
contains(ANDROID_TARGET_ARCH,armeabi-v7a) { ANDROID_EXTRA_LIBS = \ $$PWD/SQLCipherforAndroidv2.2.2/libs/armeabi/libsqlcipher_android.so \ $$PWD/SQLCipherforAndroidv2.2.2/libs/armeabi/libstlport_shared.so }
Все рапотает!!! Спасибо за внимание :-)
Название: Re: QSQLCIPHER на android
Отправлено: GNU Dimarik от Октябрь 14, 2014, 09:27
Это заработало со свежими бинариями тоже
Название: Re: QSQLCIPHER на android
Отправлено: OKTA от Октябрь 14, 2014, 10:02
Слушай, а QSQLCIPHER как работает с бд? Шифрует целиком и полностью и каждый раз при работе надо ждать, пока он дешифрует ее всю?
|