LiteDAC and UniDAC interact with SQLite in 2 approaches. The first approach is that an application uses functions of the linked SQLite library. For Windows OS it is sqlite3.dll, for Mac OS and iOS – libsqlite3.dylib, for Android – libsqlite.so. The second approach allows to connect to the database from the application directly, using so called Direct Mode. Direct Mode provides interaction with SQLite avoiding any external libraries linking. It is implemented by embedding the code of the SQLite library directly to the application. This approach allows to work with SQLite in cases, when using third-party libraries is impossible due to a number of reasons. For example, when developing applications for iOS or Mac OS, the Apple corporation prohibits deployment of any libraries along with the application.
However, there are situations, when it is preferably to use the first mode. Thus, when developing applications for Android, there is no need to worry about SQLite client library presence, since it is included into this OS distribution. On the other hand, during project implementation, strict requirements may be imposed on the compiled application size. Such requirements are especially relevant for mobile development. Therefore, it is highly desirable to have an opportunity to disable modules, that won’t be used in the application, before compilation. LiteDAC and UniDAC allow to exclude the code of the SQLite client library, that implements Direct Mode, from a ready application. As a result, the size of the developed application may be decreased.
To exclude support for Direct Mode from the project, do the following:
- Add the path to the [DAC Installation Folder]\Source] folder to the Search Path property. When using UniDAC with source code edition, add the following path: [UniDAC folder with source code]\Source\UniProviders\SQLite.
- Compile the application with the NOSTATIC option.
Pay attention, that the Search Path option and compiler options are set for each supported platform separately!
A simple sample application using LiteDAC can show the gain in the retrieved application size:
|Compilation with NOSTATIC
|4 268 Kb
|3 752 Kb
|7 292 Kb
|6 122 Kb
|1 170 Kb
|20 540 Kb
|19 883 Kb
|22 532 Kb
|21 428 Kb
|1 104 Kb
|20 181 Kb
|19 490 Kb
Thus, the use of the NOSTATIC conditional compilation directive allows to exclude the Direct Mode module from the compilation in cases when it is not used.
Note, that if you set the Direct property to True when using the NOSTATIC directive, the ‘Direct Mode disabled’ error will occur.