Considering a newly created React Native project:
npx react-native init TestProj
yarn add sqlite-mpi-client-js
yarn add smpi-iop-react-native
cd ios; pod install
- Autolinking should discover
smpi-iop-react-native
open TestProj.xcworkspace
- Add
$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)
toTarget -> Build Settings -> Library Search Paths
. - FixesCould not find auto-linked library 'swiftCoreImage'
.
- Autolinking should discover
You may also need to install https://github.com/itinance/react-native-fs in order to get file paths to pass the SMPI JS client.
An example React Native project: https://github.com/sqlite-mpi/SMPIDemoA
See https://sqlitempi.com for a general overview.
A React Native app consists of the following "layers":
- A. JS application code.
- B. Host code (iOS/Android)
- C. Guest code (SQLite MPI binary that uses FFI)
The SMPI JS client provides a SQLite API to use in layer A.
- The client is pure JS, and allows you to provide it IOP (Input Output Providers).
- IOPs allow different implementations of sending and receiving data.
- This allows the client to run in any JS environment that can send/receive data.
- Is a React Native module.
- Contains the code for layers B and C.
- Is an IOP implementation that is passed to the SMPI JS client constructor.
- Contains SQLite already compiled.
- Compiled as a shared library that is linked to the host in layer B.
- iOS uses a Universal Static Library (single binary that contains all architectures).
- Android chooses the correct JNI binary to use at runtime (arm64-v8a, armeabi-v7a, x86).
- Compiled as a shared library that is linked to the host in layer B.
The shared library binaries (.so, .a) included in this repo are MIT licensed, but the source code that produced them is closed and proprietary.
A perpetual license for the source code can be arranged for a small fee, please contact [email protected].
See https://sqlitempi.com/license for more details.