-
Notifications
You must be signed in to change notification settings - Fork 19
Encryption part 1: Restructure SDK modules #276
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is an amazing step towards making the SDK more modular. Very happy with these changes from my side.
- `commonJava` - Shared logic for Android and Java targets. | ||
- `androidMain` - Android-specific code for loading the core extension. | ||
- `jvmMain` - Java-specific code for loading the core extension. | ||
- `nativeMain` - A SQLite driver implemented with cinterop calls to sqlite3. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are also some other folders like appleMain
and appleNonWatchOsMain
in here. Might be worth mentioning.
} | ||
} | ||
|
||
cinterops.create("sqlite3") { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just for my clarification. We aren't linking SQLite in Common
, but we're just declaring the interop headers which will be linked later?
* params = params | ||
* ) | ||
* ``` | ||
* TODO: Internal Team - Status changes are reported on [statusStream]. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm actually not sure what this TODO was for. We should probably remove this.
Currently,
:core
has build logic ensuring a copy of SQLite is bundled with all apps depending on it. That's usually what we want because the SQLite build from operating systems is either unavailable (Android) or outdated / missing extension support (Apple).However, it also means that the SQLite library can't be customized. This is an issue for users wanting to use say SQLCipher. As a first step towards that, this:
:common
(really unfortunate that:core
was taken :D) project containg virtually all sources and tests that currently live in:core
. The only difference is that this project doesn't depend onsqlite-bundled
or the:static-sqlite-driver
.:core
to mostly be an empty shell depending on:common
and the bundled SQLite dependencies.:common
to depend on:core
and bundled SQLite in its tests only.The idea is that users not wanting to depend on the regular SQLite build could customize things by depending on
:common
instead.