Программа для оффлайн поиска, поддерживающая поиск задач, древних стихотворений, разработочных документов и многое другое. Можно самостоятельно создавать пакеты для оффлайн поиска.
Заявление: Все пакеты для оффлайн поиска принадлежат их владельцам, и они никак не связаны с данной программой и её разработчиками. Программа предоставляет только функцию поиска. Программа распространяется под лицензией GPL, мы надеемся, что все смогут внести свой вклад в её улучшение.
Gitee: http://gitee.com/zjzdy/Offline-small-search GitHub Mirror: https://github.com/zjzdy/Offline-small-search Главная страница: https://zjzdy.gitee.io/oss/ Текущая версия: v2.3.0
Эта версия предназначена только для Android. В сравнении с версией 2.3.0_beta, нет новых функций, это лишь обслуживание и исправление ошибок.
## Компиляция
Процесс основан на Qt 5.6.1 для Windows (msys2 mingw32) или Qt 5.7.0 для Windows (с использованием среды msys2 mingw32), OpenCV 3.1.0, Xapian 1.4.0, xz 5.2.2, Leptonica 1.73. Программа работает в окружении Windows x86_64 (Win7 и выше).
Все коды выполняются в среде mingw32_shell msys2.
Установите необходимые программы, скачайте или клонируйте проект.
pacman -Syu
pacman -S --noconfirm --needed mingw-w64-i686-tesseract-ocr mingw-w64-i686-qt-creator mingw-w64-i686-qt5-static mingw-w64-i686-qt5 mingw-w64-i686-leptonica mingw-w64-i686-opencv mingw-w64-i686-xz mingw-w64-i686-zlib mingw-w64-i686-toolchain base-devel git unzip p7zip xz tar wget zip
git clone http://gitee.com/zjzdy/Offline-small-search
cd Offline-small-search/
export ossbuild=$PWD
Перейдите на официальный сайт Xapian для скачивания последней версии Xapian core. Ссылка на скачивание: http://xapian.org/download Пример файла: xapian-core-1.4.0.tar.xz
wget http://oligarchy.co.uk/xapian/1.4.0/xapian-core-1.4.0.tar.xz
tar -xf xapian-core-1.4.0.tar.xz
cd xapian-core-1.4.0/
./configure --prefix="${ossbuild}/build-bin/" --enable-backend-inmemory=no --enable-static
make
make install
cd ..
cd zimlib/
./autogen.sh
./configure --prefix="${ossbuild}/build-bin/"
make
make install
cd ..
cp /mingw32/include/tesseract/tesscallback.h /mingw32/include/tesseract/tesscallback.h.bak
sed -i 's/template <class T> struct remove_reference;//g' /mingw32/include/tesseract/tesscallback.h
sed -i 's/template<typename T> struct remove_reference { typedef T type; };//g' /mingw32/include/tesseract/tesscallback.h
sed -i 's/template<typename T> struct remove_reference<T&> { typedef T type; };//g' /mingw32/include/tesseract/tesscallback.h
```### Шаги сборки
1. Откройте Qt Creator
2. Откройте `Offline_small_search.pro`
```bash
qtcreator Offline_small_search.pro
Примечание: если сборка завершается ошибкой и приложение не запускается, потребуется повторная компиляция библиотеки Qt.
export OPENSSL_LIBS="-lssl -lcrypto -lcrypt32 -lgdi32"
./configure.bat -qt-libjpeg -qt-harfbuzz -qt-libpng -qt-pcre -qt-zlib -no-fontconfig -nomake examples -platform win32-g++ -no-iconv -opensource -confirm-license -openssl-linked -icu -dbus -qt-sql-sqlite -no-sql-ibase -no-sql-psql -no-sql-mysql -no-sql-odbc -qt-freetype -release -opengl desktop OPENSSL_LIBS="-lssl -lcrypto -lcrypt32 -lgdi32" -prefix "${ossbuild}/build-bin/Qt"
sed -i 's/if OS(WINDOWS)/if OS(WINDOWS) && ! COMPILER(GCC)/g' qtwebkit/Source/WTF/wtf/Atomics.h
make
make install
Добавьте версии Qt и наборы в Qt Creator, затем повторите шаги 3.1–3.5.
Восстановление системных файлов:
rm /mingw32/include/tesseract/tesscallback.h
mv /mingw32/include/tesseract/tesscallback.h.bak /mingw32/include/tesseract/tesscallback.h
Копирование основного приложения, путь к директории следует указывать самостоятельно:
mkdir oss_bin
cp ./build-Offline_small_search-Desktop_Qt_MinGW_w64_32bit_MSYS2-Release/release/Offline_small_search.exe oss_bin/
Копирование зависимостей Qt:
Для нерекомпилированной версии библиотеки Qt:```bash cp -r /mingw32/share/qt5/plugins/bearer oss_bin/ cp -r /mingw32/share/qt5/plugins/imageformats oss_bin/ cp -r /mingw32/share/qt5/plugins/mediaservice oss_bin/ cp -r /mingw32/share/qt5/plugins/platforms oss_bin/ cp -r /mingw32/share/qt5/qml/QtMultimedia oss_bin/ cp -r /mingw32/share/qt5/qml/QtQuick oss_bin/ cp -r /mingw32/share/qt5/qml/QtQuick.2 oss_bin/ cp -r /mingw32/share/qt5/qml/QtWebKit oss_bin/ cp -r /mingw32/share/qt5/qml/Qt oss_bin/ cp /mingw32/share/qt5/bin/QtWebProcess.exe oss_bin/ cp /mingw32/bin/Qt5Core.dll oss_bin/ cp /mingw32/bin/Qt5Gui.dll oss_bin/ cp /mingw32/bin/Qt5Multimedia.dll oss_bin/
```sh
cp /mingw32/bin/Qt5MultimediaQuick_p.dll oss_bin/
cp /mingw32/bin/Qt5MultimediaWidgets.dll oss_bin/
cp /mingw32/bin/Qt5Network.dll oss_bin/
cp /mingw32/bin/Qt5OpenGL.dll oss_bin/
cp /mingw32/bin/Qt5Positioning.dll oss_bin/
cp /mingw32/bin/Qt5PrintSupport.dll oss_bin/
cp /mingw32/bin/Qt5Qml.dll oss_bin/
cp /mingw32/bin/Qt5Quick.dll oss_bin/
cp /mingw32/bin/Qt5Sensors.dll oss_bin/
cp /mingw32/bin/Qt5Sql.dll oss_bin/
cp /mingw32/bin/Qt5Svg.dll oss_bin/
cp /mingw32/bin/Qt5WebChannel.dll oss_bin/
cp /mingw32/bin/Qt5WebKit.dll oss_bin/
cp /mingw32/bin/Qt5WebKitWidgets.dll oss_bin/
cp /mingw32/bin/Qt5Widgets.dll oss_bin/
cp /mingw32/bin/Qt5XmlPatterns.dll oss_bin/
cp /mingw32/bin/libpcre16-0.dll oss_bin/
cp /mingw32/bin/libpcre-1.dll oss_bin/
cp /mingw32/bin/libgraphite2.dll oss_bin/
cp /mingw32/bin/libharfbuzz-0.dll oss_bin/
cp /mingw32/bin/libfreetype-6.dll oss_bin/
cp /mingw32/bin/libglib-2.0-0.dll oss_bin/
cp /mingw32/bin/libbz2-1.dll oss_bin/
Перескомпилированная версия Qt библиотек
cp -r ${ossbuild}/build-bin/Qt/plugins/bearer oss_bin/
cp -r ${ossbuild}/build-bin/Qt/plugins/imageformats oss_bin/
cp -r ${ossbuild}/build-bin/Qt/plugins/mediaservice oss_bin/
cp -r ${ossbuild}/build-bin/Qt/plugins/platforms oss_bin/
cp -r ${ossbuild}/build-bin/Qt/qml/QtMultimedia oss_bin/
cp -r ${ossbuild}/build-bin/Qt/qml/QtQuick oss_bin/
cp -r ${ossbuild}/build-bin/Qt/qml/QtQuick.2 oss_bin/
cp -r ${ossbuild}/build-bin/Qt/qml/QtWebKit oss_bin/
cp -r ${ossbuild}/build-bin/Qt/qml/Qt oss_bin/
cp ${ossbuild}/build-bin/Qt/bin/QtWebProcess.exe oss_bin/
cp ${ossbuild}/build-bin/Qt/bin/Qt5Core.dll oss_bin/
cp ${ossbuild}/build-bin/Qt/bin/Qt5Gui.dll oss_bin/
cp ${ossbuild}/build-bin/Qt/bin/Qt5Multimedia.dll oss_bin/
``````bash
cp ${ossbuild}/build-bin/Qt/bin/Qt5MultimediaQuick_p.dll oss_bin/
cp ${ossbuild}/build-bin/Qt/bin/Qt5MultimediaWidgets.dll oss_bin/
cp ${ossbuild}/build-bin/Qt/bin/Qt5Network.dll oss_bin/
cp ${ossbuild}/build-bin/Qt/bin/Qt5OpenGL.dll oss_bin/
cp ${ossbuild}/build-bin/Qt/bin/Qt5Positioning.dll oss_bin/
cp ${ossbuild}/build-bin/Qt/bin/Qt5PrintSupport.dll oss_bin/
cp ${ossbuild}/build-bin/Qt/bin/Qt5Qml.dll oss_bin/
cp ${ossbuild}/build-bin/Qt/bin/Qt5Quick.dll oss_bin/
cp ${ossbuild}/build-bin/Qt/bin/Qt5Sensors.dll oss_bin/
cp ${ossbuild}/build-bin/Qt/bin/Qt5Sql.dll oss_bin/
cp ${ossbuild}/build-bin/Qt/bin/Qt5Svg.dll oss_bin/
Копируем остальные зависимости
cp /mingw32/bin/libHalf-2_2.dll oss_bin/
cp /mingw32/bin/libiconv-2.dll oss_bin/
cp /mingw32/bin/libicudt57.dll oss_bin/
cp /mingw32/bin/libicuin57.dll oss_bin/
cp /mingw32/bin/libicuuc57.dll oss_bin/
cp /mingw32/bin/libIex-2_2.dll oss_bin/
cp /mingw32/bin/libIlmImf-2_2.dll oss_bin/
cp /mingw32/bin/libIlmThread-2_2.dll oss_bin/
cp /mingw32/bin/libImath-2_2.dll oss_bin/
cp /mingw32/bin/libjasper-1.dll oss_bin/
cp /mingw32/bin/libjpeg-8.dll oss_bin/
cp /mingw32/bin/libtiff-5.dll oss_bin/
cp /mingw32/bin/libwebp-6.dll oss_bin/
cp /mingw32/bin/libopencv_core310.dll oss_bin/
cp /mingw32/bin/libopencv_imgcodecs310.dll oss_bin/
cp /mingw32/bin/libopencv_imgproc310.dll oss_bin/
cp /mingw32/bin/libopencv_videoio310.dll oss_bin/
cp /mingw32/bin/libopencv_photo310.dll oss_bin/
cp /mingw32/bin/libpng16-16.dll oss_bin/
cp /mingw32/bin/libsqlite3-0.dll oss_bin/
cp /mingw32/bin/libwinpthread-1.dll oss_bin/
cp /mingw32/bin/libgcc_s_dw2-1.dll oss_bin/
cp /mingw32/bin/libstdc++-6.dll oss_bin/
cp /mingw32/bin/libintl-8.dll oss_bin/
cp /mingw32/bin/libxml2-2.dll oss_bin/
cp /mingw32/bin/libxslt-1.dll oss_bin/
cp /mingw32/bin/tbb.dll oss_bin/
cp /mingw32/bin/tbbmalloc.dll oss_bin/
cp /mingw32/bin/libeay32.dll oss_bin/
cp /mingw32/bin/ssleay32.dll oss_bin/
cp /mingw32/bin/liblzma-5.dll oss_bin/
cp /mingw32/bin/zlib1.dll oss_bin/
```Установлено отдельное приложение "Offline Crumb" в папку `oss_bin/`.
------
## Компиляция версии для AndroidДалее приведены шаги, которые можно адаптировать для последней версии.
Процесс основан на следующих компонентах: Qt 5.11.2 для Android, OpenCV 3.4.3, Xapian 1.4.7, xz 5.2.4, Leptonica 1.74.4, tess-two 9.0.0, cryptopp 7.0.0. Операционная система — Windows x86_64 (Windows 7 и выше), NDK r10e, SDK для Android 28.0.2, JDK 1.8.0_152.
Все коды выполняются в среде MSYS2.
Скачать MSYS2 можно с сайта: [http://msys2.github.io/](http://msys2.github.io/)
### 0. Подготовка проекта
Установите необходимое программное обеспечение и скачайте или клонируйте проект.
Сайт для скачивания Qt: [http://www.qt.io/download-open-source/#section-2](http://www.qt.io/download-open-source/#section-2)
Скачайте и установите Qt для Android и Qt Creator
```bash
pacman -S --noconfirm --needed base-devel git unzip p7zip xz tar wget python
git clone http://gitee.com/zjzdy/Offline-small-search
cd Offline-small-search/
export ossbuild=$PWD
```### 1. Android NDK и SDK (следующие шаги могут требовать прокси)
Перейдите на официальный сайт Android NDK и скачайте соответствующую версию Android NDK в текущий каталог ($PWD) и запустите его (не забудьте заменить windows на соответствующую систему, не скачивайте r18 и более поздние версии).
Ссылка для скачивания: [https://github.com/android-ndk/ndk/wiki](https://github.com/android-ndk/ndk/wiki)
Далее используется android-ndk-r10e-windows-x86_64.zip (неизвестно почему все используют r10e как предварительно скомпилированный вариант NDK, поэтому будем следовать за ними).
```bash
wget https://dl.google.com/android/repository/android-ndk-r10e-windows-x86_64.zip
unzip android-ndk-r10e-windows-x86_64.zip
cd android-ndk-r10e/
export NDK_ROOT=$PWD
export ANDROID_NDK_ROOT=$PWD
export PATH=$PWD:$PATH
#(Python версия)
#sed -i "s/host_tag = get_host_tag_or_die()/host_tag = 'windows-x86_64'/g" ./build/tools/make_standalone_toolchain.py
#./build/tools/make_standalone_toolchain.py --arch=arm --stl=gnustl --api=21 --install-dir=./arm-linux-androideabi-4.9
#(sh версия)
./build/tools/make-standalone-toolchain.sh --arch=arm --stl=gnustl --platform=android-16 --toolchain=arm-linux-androideabi-4.9 --install-dir=./arm-linux-androideabi-4.9
cd ..
mkdir build-bin
mkdir build-bin/lib
mkdir build-bin/include
unzip img_include.zip -d build-bin/include/
Перейдите на официальный сайт Android SDK и скачайте соответствующую версию Android SDK в текущий каталог ($PWD) и запустите её (не забудьте заменить windows на соответствующую систему).
Ссылка для скачивания: https://developer.android.com/studio/index.html#downloads
Теперь Android SDK объединён с Android Studio и отдельные установочные пакеты уже не предоставляются.Если вы считаете, что установочный пакет Android Studio слишком большой или сложен для установки, используйте старый адрес для скачивания Android SDK: https://dl.google.com/android/repository/sdk-tools-windows-4333796.zip для скачивания и установки, а затем обновите до последней версии. Затем установите следующие компоненты:
Android SDK Tools
Android SDK Platform-tools
Android SDK Build-tools, revision 28.0.2
```### 2. Установка OpenCV
Перейдите на официальный сайт OpenCV и скачайте последнюю версию OpenCV Android SDK.
Ссылка для скачивания: [https://opencv.org/releases.html](https://opencv.org/releases.html)
Далее используется opencv-3.4.3-android-sdk.zip.```bash
wget https://github.com/opencv/opencv/releases/download/3.4.3/opencv-3.4.3-android-sdk.zip
unzip opencv-3.4.3-android-sdk.zip OpenCV-android-sdk/sdk/native/staticlibs/armeabi-v7a/* OpenCV-android-sdk/sdk/native/3rdparty/libs/armeabi-v7a/* -d ./build-bin/lib
cp build-bin/lib/OpenCV-android-sdk/sdk/native/staticlibs/armeabi-v7a/* build-bin/lib/OpenCV-android-sdk/sdk/native/3rdparty/libs/armeabi-v7a/* ./build-bin/lib
rm -rf build-bin/lib/OpenCV-android-sdk
mv ./build-bin/lib/liblibjasper.a ./build-bin/lib/libjasper.a
mv ./build-bin/lib/liblibjpeg-turbo.a ./build-bin/lib/libjpeg-turbo.a
mv ./build-bin/lib/liblibpng.a ./build-bin/lib/libpng.a
mv ./build-bin/lib/liblibprotobuf.a ./build-bin/lib/libprotobuf.a
mv ./build-bin/lib/liblibtiff.a ./build-bin/lib/libtiff.a
mv ./build-bin/lib/liblibwebp.a ./build-bin/lib/libwebp.a
unzip opencv-3.4.3-android-sdk.zip OpenCV-android-sdk/sdk/native/jni/include/** -d ./build-bin/include/
cp -rf ./build-bin/include/OpenCV-android-sdk/sdk/native/jni/include/* ./build-bin/include/
rm -rf build-bin/include/OpenCV-android-sdk
Перейдите на официальный сайт XZ Utils для скачивания последней версии XZ Utils
Ссылка для скачивания: http://tukaani.org/xz/
Для примера используется xz-5.2.4.tar.xz```bash
wget https://tukaani.org/xz/xz-5.2.4.tar.xz
tar -xf xz-5.2.4.tar.xz
cd xz-5.2.4/
./configure --prefix="${ossbuild}/build-bin/" --host=arm-linux-androideabi CC="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-gcc.exe" CPP="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-cpp.exe" CXX="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-g++.exe" CXXCPP="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-cpp.exe" AR="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-ar.exe" AS="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-as.exe" NM="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-nm.exe" OBJDUMP="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-objdump.exe" STRIP="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-strip.exe" RANLIB="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-ranlib.exe" LDFLAGS="-L${ossbuild}/arm-linux-androideabi-4.9/lib"
make && make install
```markdown
### 4. Кросс-компиляция XZ
```Скачайте последнюю версию Xapian Core с официального сайта Xapian:
[https://xapian.org/download](https://xapian.org/download)
Для примера используется xapian-core-1.4.7.tar.xz.
```bash
wget https://oligarchy.co.uk/xapian/1.4.7/xapian-core-1.4.7.tar.xz
tar -xf xapian-core-1.4.7.tar.xz
cd xapian-core-1.4.7/
./configure --prefix="${ossbuild}/build-bin/" --host=arm-linux-androideabi \
CC="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-gcc.exe" \
CPP="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-cpp.exe" \
CXX="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-g++.exe" \
CXXCPP="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-cpp.exe" \
AR="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-ar.exe" \
AS="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-as.exe" \
NM="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-nm.exe" \
OBJDUMP="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-objdump.exe" \
STRIP="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-strip.exe" \
RANLIB="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-ranlib.exe" \
LDFLAGS="-L${ossbuild}/arm-linux-androideabi-4.9/lib -L${ossbuild}/build-bin/lib -Wl,--fix-cortex-a8 -Wl,--gc-sections" \
CPPFLAGS=" -Wno-psabi -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8 -DNDEBUG -Wa,--noexecstack -fno-builtin-memmove -O2 -Os -mthumb -D_REENTRANT -fPIC -I${ossbuild}/build-bin/include -DANDROID_BUILD -DANDROID" \
CFLAGS=" -Wno-psabi -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8 -DNDEBUG -Wa,--noexecstack -fno-builtin-memmove -O2 -Os -mthumb -D_REENTRANT -fPIC -I${ossbuild}/build-bin/include -std=gnu11 -DANDROID_BUILD -DANDROID" \
CXXFLAGS=" -Wno-psabi -march=armv7-a -mfloat-abi=softfp -mfpu=neon -ffunction-sections -DNDEBUG -Wa,--noexecstack -fno-builtin-memmove -O2 -Os -mthumb -D_REENTRANT -fPIC -I${ossbuild}/build-bin/include -std=gnu++11 -DANDROID_BUILD -DANDROID" \
--disable-xz --disable-xzdec --disable-lzmadec --disable-lzmainfo --disable-lzma-links --disable-scripts --disable-doc
make
make install
cd ../..
Ссылка на скачивание: http://www.leptonica.com/download.html
Для примера используется leptonica-1.74.4.tar.gz:
wget http://www.leptonica.com/source/leptonica-1.74.4.tar.gz
tar -xf leptonica-1.74.4.tar.gz
cd leptonica-1.74.4/
./configure --prefix="${ossbuild}/build-bin/" --host=arm-linux-androideabi \
CC="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-gcc.exe" \
CPP="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-cpp.exe" \
CXX="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-g++.exe" \
CXXCPP="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-cpp.exe" \
AR="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-ar.exe" \
AS="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-as.exe" \
NM="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-nm.exe" \
OBJDUMP="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-objdump.exe" \
STRIP="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-strip.exe" \
RANLIB="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-ranlib.exe" \
LDFLAGS="-L${ossbuild}/arm-linux-androideabi-4.9/lib -L${ossbuild}/build-bin/lib -Wl,--fix-cortex-a8 -Wl,--gc-sections" \
CPPFLAGS=" -Wno-psabi -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8 -DNDEBUG -Wa,--noexecstack -fno-builtin-memmove -O2 -Os -mthumb -D_REENTRANT -fPIC -I${ossbuild}/build-bin/include -DANDROID_BUILD -DANDROID" \
CFLAGS=" -Wno-psabi -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8 -DNDEBUG -Wa,--noexecstack -fno-builtin-memmove -O2 -Os -mthumb -D_REENTRANT -fPIC -I${ossbuild}/build-bin/include -std=gnu11 -DANDROID_BUILD -DANDROID" \
CXXFLAGS=" -Wno-psabi -march=armv7-a -mfloat-abi=softfp -mfpu=neon -ffunction-sections -DNDEBUG -Wa,--noexecstack -fno-builtin-memmove -O2 -Os -mthumb -D_REENTRANT -fPIC -I${ossbuild}/build-bin/include -std=gnu++11 -DANDROID_BUILD -DANDROID" \
--enable-backend-inmemory=no --enable-static
sed -i 's/#include "safesysstat.h"/#include "safesysstat.h"\n#include "safeerrno.h"/g' common/proc_uuid.cc
make
make install
cd ../..
Ссылка на скачивание: https://github.com/rmtheis/tess-two/releases```bash export winossbuild=$(cygpath -m "${ossbuild}") wget https://github.com/rmtheis/tess-two/archive/9.0.0.tar.gz tar -xzf 9.0.0.tar.gz cd tess-two-9.0.0/ sed -i 's/android:minSdkVersion="9"/android:minSdkVersion="16"/' tess-two/AndroidManifest.xml sed -i 's/LOCAL_SHARED_LIBRARIES/LOCAL_STATIC_LIBRARIES/' tess-two/jni/com_googlecode_tesseract_android/Android.mk sed -i 's/BUILD_SHARED_LIBRARY/BUILD_STATIC_LIBRARY/' tess-two/jni/com_googlecode_tesseract_android/Android.mk sed -i 's/LEPTONICA_PATH/#LEPTONICA_PATH/' tess-two/jni/Android.mk sed -i 's/LIBJPEG_PATH/#LIBJPEG_PATH/' tess-two/jni/Android.mk sed -i 's/LIBPNG_PATH/#LIBPNG_PATH/' tess-two/jni/Android.mk sed -i 's/NDK_TOOLCHAIN_VERSION := clang/NDK_TOOLCHAIN_VERSION := 4.9/' tess-two/jni/Application.mk sed -i 's/APP_ABI/APP_ABI := armeabi-v7a #' tess-two/jni/Application.mk sed -i 's/android-9/android-16/' tess-two/jni/Application.mk echo "APP_CPPFLAGS += -Wno-psabi -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8 -DNDEBUG -Wa,--noexecstack -fno-builtin-memmove -O2 -Os -mthumb -fPIC -I${winossbuild}/build-bin/include -I${winossbuild}/build-bin/include/leptonica -L${winossbuild}/build-bin/lib -Wl,--gc-sections" >> tess-two/jni/Application.mk
```markdown
### 7. Компиляция zimlib
cd zimlib/ ./autogen.sh ./configure --prefix="${ossbuild}/build-bin/" --host=arm-linux-androideabi CC="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-gcc.exe" CPP="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-cpp.exe" CXX="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-g++.exe" CXXCPP="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-cpp.exe" AR="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-ar.exe" AS="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-as.exe" NM="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-nm.exe" OBJDUMP="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-objdump.exe" STRIP="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-strip.exe" RANLIB="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-ranlib.exe" LDFLAGS="-L${ossbuild}/arm-linux-androideabi-4.9/"
```markdown
### 8. Компиляция Crypto++
```Перейдите на страницу выпусков проекта Crypto++ на GitHub и скачайте последнюю версию.
Ссылка на скачивание: [https://github.com/weidai11/cryptopp/releases](https://github.com/weidai11/cryptopp/releases)
Пример использования файла `CRYPTOPP_7_0_0.zip`.
Замечание: можно игнорировать ошибки при связывании исполняемых файлов (например, `.exe`), если удалось скомпилировать `libcryptopp.a`.```bash
wget https://github.com/weidai11/cryptopp/archive/CRYPTOPP_7_0_0.zip
unzip CRYPTOPP_7_0_0.zip
cd cryptopp-CRYPTOPP_7_0_0/
sed -i 's/"darwin-x86_64" "linux-x86" "darwin-x86"/"darwin-x86_64" "windows-x86_64" "linux-x86" "darwin-x86" "windows-x86"/g' ./setenv-android.sh
./setenv-android.sh neon gnu
export IS_ANDROID=1
export IS_NEON=1
export ANDROID_FLAGS="-march=armv7-a -mfpu=neon -mfloat-abi=softfp -Wl,--fix-cortex-a8 -funwind-tables -fexceptions -frtti -I${ossbuild}/arm-linux-androideabi-4.9/sysroot/usr/include"
export CXXFLAGS=${ANDROID_FLAGS}
export CPP="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-cpp.exe"
export CC="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-gcc.exe"
export CXX="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-g++.exe"
export LD="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-ld.exe"
export AS="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-as.exe"
export AR="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-ar.exe"
export RANLIB="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-ranlib.exe"
export STRIP="${ossbuild}/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-strip.exe"
Скачайте последнюю версию OpenSSL 1.0.2 с официального сайта OpenSSL.
Ссылка на скачивание```bash export MACHINE=armv7 export RELEASE=2.6.37 export SYSTEM=android export ARCH=arm export ANDROID_NDK="${NDK_ROOT}" export CROSS_COMPILE="arm-linux-androideabi-" export OPENSSL_VERSION="openssl-1.0.2p" export ANDROID_ARCH="arch-arm" export ANDROID_EABI="arm-linux-androideabi-4.9" export ANDROID_API="android-16" export ANDROID_SYSROOT="${NDK_ROOT}/platforms/android-16/arch-arm" export CROSS_SYSROOT="$ANDROID_SYSROOT" export NDK_SYSROOT="$ANDROID_SYSROOT" export SYSROOT="$ANDROID_SYSROOT" export ANDROID_TOOLCHAIN="${NDK_ROOT}/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin" export ANDROID_DEV="${NDK_ROOT}/platforms/android-16/arch-arm/usr" export PATH="$ANDROID_TOOLCHAIN:$PATH" wget https://www.openssl.org/source/openssl-1.0.2p.tar.gz tar -xf openssl-1.0.2p.tar.gz cd openssl-1.0.2p/ ./Configure --prefix="${ossbuild}/build-bin/" no-hw no-engine shared android-armv7 make depend make CALC_VERSIONS="SHLIB_COMPAT=; SHLIB_SOVER=" build_libs cp libssl.so "${ossbuild}/build-bin/lib/" cp libcrypto.so "${ossbuild}/build-bin/lib/"
1. Убедитесь, что среда для компиляции Android (armeabi-v7a) для Qt настроена (включая SDK, NDK, ant и Java).
2. Откройте Qt Creator.
3. Откройте проект `Offline_small_search.pro`.
4. Выберите конфигурацию "Android for armeabi-v7a (GCC 4.9)".
5. Выберите режим "Release".
6. В разделе "Шаги сборки" в пункте "Сборка Android APK" выберите "Android build SDK" как android-23, отметьте "Использование Gradle" или скачайте и настройте [Apache Ant](http://ant.apache.org/bindownload.cgi).
7. Нажмите кнопку сборки.
## Благодарность за следующие проекты, расположенные в алфавитном порядке:
* Qt: [http://www.qt.io/](http://www.qt.io/)
* Zimlib: [http://www.openzim.org/wiki/Zimlib](http://www.openzim.org/wiki/Zimlib) [https://github.com/openzim/libzim](https://github.com/openzim/libzim)
* Xpian: [http://xapian.org](http://xapian.org)
* libuuid: [http://e2fsprogs.sourceforge.net](http://e2fsprogs.sourceforge.net/)
* OpenCV: [http://www.opencv.org](http://www.opencv.org)
* Tesseract: [https://github.com/tesseract-ocr/tesseract](https://github.com/tesseract-ocr/tesseract)
* Leptonica: [http://www.leptonica.com](http://www.leptonica.com)
* OpenCC: [https://github.com/BYVoid/OpenCC](https://github.com/BYVoid/OpenCC)
* Crypto++: [http://www.cryptopp.com/](http://www.cryptopp.com/)
* Zeal: [https://zealdocs.org](https://zealdocs.org)
* Dash: [https://kapeli.com](https://kapeli.com)
## Проблемы
1. При нажатии клавиши "назад" во время просмотра содержимого существует очень маленькая вероятность того, что приложение вылетит. Если проблема воспроизводится, создайте issue (необходимо предоставить конкретный пакет и шаги воспроизведения).
2. У некоторых js или css и вложенного html возникают проблемы с загрузкой (будет исправлено в версии 3.0).## TODO
1. Реализация рефакторинга для версии 3.0 (этот пункт будет выполнен после окончания ЕГЭ в 2017 году).
+ 1.1 Использование веб-сервера для просмотра контента (планируется использование Tufao).
+ 1.2 Организация кода интерфейса и бизнес-логики.
+ 1.2.1 Использование QHash или QMap для хранения настроек и данных, кроме пакета (история, закладки, метаданные части пакета).
+ 1.3 Поддержка запросов к индексу docset (SQLite) (Dash и Zeal).
+ 1.4 Разделение функциональности плагинов на клиентскую и серверную части.
+ 1.5 Разделение всего приложения на клиентскую и серверную части, где клиентская часть зависит только от библиотек Qt и отвечает за управление интерфейсом и отображение, а серверная часть отвечает за реализацию конкретной функциональности.
+ 1.6 Клиентская часть может использовать удалённый сервер.
+ 1.7 Серверная часть должна поддерживать несколько клиентских частей.
2. Обеспечение безопасности плагинов, проведение проверок безопасности и проверки источников.
3. Конечная цель: объединение функциональности Kiwix, Zeal и Mdict, чтобы они могли использоваться как сервер помощи, поддерживающий пользовательские плагины (включая онлайн-поиск, голосовой поиск, действия над отображаемым содержимым: такие как перевод).
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )