Skip to content

Latest commit

 

History

History
110 lines (70 loc) · 4.99 KB

File metadata and controls

110 lines (70 loc) · 4.99 KB

android-sqlite-evplus-ndk-driver-free build (with evplus-ext user defined functions)

Provides Android NDK build of SQLite with an optimized JSON-based data interface and a workaround for large SELECT results, with a low-level API for Cordova SQLite evplus plugin versions.

Based on:

by Christopher J. Brody aka Chris Brody mailto: chris.brody+brodybits@gmail.com

License: GPL v3 (https://www.gnu.org/licenses/gpl-3.0.txt) or commercial license options

About

android-sqlite-evplus-ndk-driver-free provides build of a JAR with the following:

This is accomplished by using GlueGen around the C module.

Minimum API level: android-22 (Android 5.1)

NOTE: This project references multiple subprojects, which may be resolved by: $ make init (as described below).

WARNING: The reference handles that are returned by the EVNDKDriver library functions are raw C pointer values. If someone uses a reference handle that is not valid, or no longer valid with the EVNDKDriver library the behavior is undefined (may crash, for example). It is NOT recommended to use this API directly unless you really understand how this library works internally.

SQLite build information

SQLite version

__3.40.0__

android-ndk version notes

See the following reference for installing older android-ndk cask using Homebrew: https://www.jverdeyen.be/mac/downgrade-brew-cask-application/

To install android-ndk version r16b, for example:

brew cask install https://raw.githubusercontent.com/Homebrew/homebrew-cask/4570652dc6a3a8f7fd2be1053dd43547a2c78e26/Casks/android-ndk.rb

Note that homebrew-cask seems to have restored maintenance of the android-ndk cask, as discussed in Homebrew/homebrew-cask#58883.

See also for some historical android-ndk cask information:

FUTURE TODO: better documentation of API and some internal details

SQLite build flags

  • -DSQLITE_THREADSAFE=1
  • -DSQLITE_DEFAULT_SYNCHRONOUS=3
  • -DSQLITE_DEFAULT_MEMSTATUS=0
  • -DSQLITE_OMIT_DECLTYPE
  • -DSQLITE_OMIT_DEPRECATED
  • -DSQLITE_OMIT_PROGRESS_CALLBACK
  • -DSQLITE_OMIT_SHARED_CACHE
  • -DSQLITE_TEMP_STORE=2
  • -DSQLITE_OMIT_LOAD_EXTENSION
  • -DSQLITE_ENABLE_FTS3
  • -DSQLITE_ENABLE_FTS3_PARENTHESIS
  • -DSQLITE_ENABLE_FTS4
  • -DSQLITE_ENABLE_FTS5
  • -DSQLITE_ENABLE_RTREE
  • -DSQLITE_ENABLE_JSON1

New stable default page size and cache size (https://sqlite.org/pgszchng2016.html):

  • -DSQLITE_DEFAULT_PAGE_SIZE=4096
  • -DSQLITE_DEFAULT_CACHE_SIZE=-2000

Dependencies

For future consideration

  • Support direct query of BLOB type

FUTURE TBD/TODO:

Building

Normal build

Initialize with the subproject references:

$ make init

Then to build:

$ make

Regenerage Java & C glue code

$ make regen