sqlite3_bridge 1.0.0 copy "sqlite3_bridge: ^1.0.0" to clipboard
sqlite3_bridge: ^1.0.0 copied to clipboard

sqlite3 bindings with prebuilt native libraries for desktop, Android, and iOS, including automatic integration into Dart and Flutter projects.

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

Версионирование пакета #

Каждая версия пакета использует фиксированную версию библиотеки. Но пакет версионируется без учета версий библиотеки.

Поддерживаемые платформы #

  • linux: x64, arm64
  • macos: x64, arm64
  • windows: x64
  • android: arm32, arm64, x64
  • ios: device arm64, simulator arm64

Платформы web в текущий момент времени не поддерживается.

Исходные коды библиотеки #

В каталоге external хранится копия репозитория библиотеки. После клонирования репозитория выполнено переключение на определенную версию библиотеки. Затем каталог .git из external был удален. Дальше каталог external был сохранен с фиксированной выбранной версией в репозиторий текущего проекта.

git clone https://github.com/sqlite/sqlite.git external
cd external
git fetch --tags
git tag --list 'version-*' --sort=-v:refname | head -n 5
git checkout version-3.53.4
rm -rf .git
cd ..
git add external
git commit -mu

Сборка #

Для компиляции библиотеки предусмотрены в каталоге tool разные скрипты.

Под desktop платформы выполняется сборка на соответствующих платформах. Сборка выполняется под текущую архитектуру процессора.

Для android компиляция выполняется в linux, для ios используется macos. Для мобильных платформ требуется явно при запуске скриптов сборки указывать целевую платформу или архитектуру.

Пример запуска сборки под linux:

bash tool/linux.sh

Результат сборки сохраняется в каталоге prebuilt/linux/<arch>.

Все скомпилированные библиотеки хранятся в prebuilt каталоге с одним именем. Но могут применяться разные расширения или префиксы, которые зависят от целевой платформы.

Биндинги #

Генерация биндингов выполняется командой:

bash tool/bindings.sh

Применение библиотек #

Для применения в программе текущий пакет добавляется как зависимость. После этого при запуске программы через hook/build.dart автоматически привязывается к сборке требуемая версия библиотеки.

Для возможности работы хука необходимо выполнение следующих условий:

  • все скрипты сборки должны сохранять библиотеку с одним именем без учета префикса и расширения, которые определяются целевой платформой
  • хук должен подключать библиотеку по имени, которое применятся для библиотек
  • ffigen должен использовать как asset-id выражение, генерируемое на основе названия текущего пакета и на основе названия библиотеки

Тестирование #

В пакете есть тесты, которые проверяют возможность загрузки библиотеки.

Для запуска тестов на desktop устройствах в dart проектах используется команда:

dart test

Для тестов flutter проектов используется команда:

cd example flutter/example
flutter test integration_test/load_test.dart
0
likes
115
points
81
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

sqlite3 bindings with prebuilt native libraries for desktop, Android, and iOS, including automatic integration into Dart and Flutter projects.

License

unknown (license)

Dependencies

ffi, libffigen, libhook

More

Packages that depend on sqlite3_bridge