1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zjzdy-Offline-small-search

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Оффлайн-поиск small-search (Оффлайн малый поиск)

Программа для оффлайн поиска, поддерживающая поиск задач, древних стихотворений, разработочных документов и многое другое. Можно самостоятельно создавать пакеты для оффлайн поиска.


Заявление: Все пакеты для оффлайн поиска принадлежат их владельцам, и они никак не связаны с данной программой и её разработчиками. Программа предоставляет только функцию поиска. Программа распространяется под лицензией 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

Обновление до версии v2.3. Yöntem: 3.8. Если не понятен контекст, оставляй без изменений.

Обновление до версии v2.3.0

Эта версия предназначена только для Android. В сравнении с версией 2.3.0_beta, нет новых функций, это лишь обслуживание и исправление ошибок.

  • Обновлены некоторые зависимости и их компиляция, а также исправлены проблемы, возникшие при использовании новых зависимостей.
  • Исправлены проблемы с правами доступа для Android 6+.
  • Устранены системные зависимости для Android 7+.
  • Исправлены возможные проблемы соединения HTTP для Android 9+.
  • Изменён внутренний URL-адрес скачивания на протокол HTTPS.
  • Изменено значение по умолчанию для ручной установки путей на внешние хранилища системы.## Проект FindK Текущая версия больше не является основной для поддержки, следующий проект FindK находится в разработке, ждите новостей. https://gitee.com/zjzdy/FindK Прогресс начальной версии:
  • Формат хранения данных: 60%
  • Обработка кодировки: OnClickListener 85%
  • Интерфейс пользователя: 35%
  • Оптимизация поиска: 0%
  • Обработка изображений: 0%
  • Вспомогательные инструменты: 20%

Функции и особенности

  • Полный текстовый поиск в оффлайне, использует высоко сжатые ZIM файлы для хранения данных.
  • Возможность создания или добавления любых пакетов для оффлайн поиска.
  • Поддержка пользовательских URL, включая внешние ссылки.
  • История запросов.
  • Поиск одного пакета или всех пакетов одновременно.
  • Поиск по фотографии (требуется загрузка соответствующего модуля).
  • Онлайн перевод (использует Youdao Translate) (для Android требуется версия 4.4 и выше).
  • Автоматическое преобразование между упрощённым и традиционным китайским языками, позволяющее находить информацию независимо от того, используется ли упрощённый или традиционный китайский.
  • Дополнительные функции ожидают своего открытия.

Скачивание

Облачное хранилище

  • Baidu Netdisk: http://pan.baidu.com/s/1mhnmlEK Пароль: 396f## Адреса общедоступных пакетов для оффлайн поиска Обратите внимание: Для пакетов для оффлайн поиска рекомендуется использовать последнюю версию программы, так как программа не гарантирует совместимость с более старыми версиями пакетов.
  • Пакет для оффлайн поиска школьных задач https://pan.baidu.com/s/13Bzyg6BExDh-whX9107qQQ Пароль: a3kp
  • База данных классических произведений https://pan.baidu.com/s/1EitzZZLb4wZKDh3LYUWyfw Пароль: yhju
  • Оффлайн пакет с документацией http://pan.baidu.com/s/1geD2PLD Пароль: mc6s
  • Утилита сборки оффлайн пакетов http://gitee.com/zjzdy/Offline_Small_Search_pkg_build
  • Если вам требуется поделиться оффлайн пакетами, свяжитесь со мной для добавления ссылок на скачивание на этой странице
  • Из-за ограничений серверных ресурсов модуль онлайн-скачивания в программе временно недоступен. Пожалуйста, скачайте пакеты самостоятельно.
  • Объявление: содержимое оффлайн пакетов принадлежит авторам оригинальных материалов. В случае отсутствия указания на права использования удалите пакеты в течение 24 часов после скачивания. Разработчики программы не несут ответственности за последствия.

Основные разработчики программы:

Скриншоты

Главное меню Поиск дополнительных данных## Компиляция

Windows версия компиляции

Процесс основан на 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.

0. Подготовка проекта

Установите необходимые программы, скачайте или клонируйте проект.

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

1. Компиляция Xapian

Перейдите на официальный сайт 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 ..

2. Компиляция zimlib

cd zimlib/
./autogen.sh
./configure --prefix="${ossbuild}/build-bin/"
make
make install
cd ..

3. Компиляция "Оффлайн маленький поиск"

  1. Обработка некоторых заголовочных файлов
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
  1. Выберите конфигурацию Desktop Qt (static) MinGW-w64 32bit (MSYS2)
  2. Выберите режим Release
  3. Нажмите кнопку "Build"

Примечание: если сборка завершается ошибкой и приложение не запускается, потребуется повторная компиляция библиотеки 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

3. Компиляция liblzma

Перейдите на официальный сайт 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 ../..

5. Компиляция LeptonicaПерейди на официальный сайт Leptonica для скачивания последней версии.

Ссылка на скачивание: 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 ../..

6. Компиляция tess-twoСкачайте последнюю версию tess-two со страницы releases.

Ссылка на скачивание: 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"

9. Кросс-компиляция OpenSSL для устройств Android 7+

Скачайте последнюю версию 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 )

Вы можете оставить комментарий после Вход в систему

Введение

Офлайн Сяо Соу — первое в Китае программное обеспечение, поддерживающее офлайн-поиск вопросов. Оно позволяет искать документы, материалы, вопросы, древние стихи и т. д. в режиме офлайн. Развернуть Свернуть
GPL-3.0
Отмена

Обновления (5)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/zjzdy-Offline-small-search.git
git@api.gitlife.ru:oschina-mirror/zjzdy-Offline-small-search.git
oschina-mirror
zjzdy-Offline-small-search
zjzdy-Offline-small-search
master