Добавляем в файл qsqlcipher.pro пути к библиотекам скачанной бинарной сборки:
android {
equals(ANDROID_TARGET_ARCH, x86) {
LIBS += -L$$PWD/../../../../sqlcipher-for-android-v3.2.0/libs/x86
}
equals(ANDROID_TARGET_ARCH, armeabi-v7a) {
LIBS += -L$$PWD/../../../../sqlcipher-for-android-v3.2.0/libs/armeabi-v7a
}
}
Добавляем условие для включения нужных библиотек - под Android нет libsqlciper и libcrypto, а используется одна библиотека из готовой сборки:
!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
!android {
LIBS += -L$$OUT_PWD/lib -lsqlcipher -lcrypto
}
else {
LIBS += -L$$OUT_PWD/lib -lsqlcipher_android
}
QMAKE_RPATHDIR += $$OUT_PWD/lib
} else {
LIBS *= $$QT_LFLAGS_SQLITE
QMAKE_CXXFLAGS *= $$QT_CFLAGS_SQLITE
}
Нужен еще путь к заголовочному файлу sqlite3.h и сам файл. Я его просто взял из сборки для Linux (описанной раньше), INCLUDEPATH остался тот же.
Кроме копирования плагина в проект, использующий этот плагин, нужно добавить библиотеки для компоновки и деплоймента:
android {
contains(ANDROID_TARGET_ARCH,armeabi-v7a) {
LIBS += -L$$PWD/armeabi-v7a -lsqlcipher_android
ANDROID_EXTRA_LIBS = $$PWD/armeabi-v7a/libstlport_shared.so \
$$PWD/armeabi-v7a/libsqlcipher_android.so
}
contains(ANDROID_TARGET_ARCH,x86) {
LIBS += -L$$PWD/x86 -lsqlcipher_android -lstlport_shared
ANDROID_EXTRA_LIBS = $$PWD/x86/libstlport_shared.so \
$$PWD/x86/libsqlcipher_android.so
}
}
Здесь выяснилась одна интересная особенность - порядок указания библиотек в ANDROID_EXTRA_LIBS имеет значение! Если указать libstlport_shared.so второй, а не первой (как в приведенной выше ссылке), то под Android версий, более старых, чем 4.3 (я проверял на 4.0.3 и 4.2.2) при запуске проекта эта библиотека не находится (could not load library "libstlport_shared.so"), причем эта ошибка воспроизводится под обеими архитектурами. Если же libstlport_shared.so указана первой - все нормально работает под всеми версиями (от 4.0.3 до 4.4.2).
Комментариев нет:
Отправить комментарий