# Installation Guide Akavache V11.1 uses a modular package structure. Choose the packages that match your needs. ## Package Overview ### Core Package (Included with Serializers, In Memory only) ```xml ``` ### SQLite Storage Backends (recommended) ```xml ``` ### Serializers (Choose One - Required!) ```xml ``` ### Optional Extensions ```xml ``` ## Supported Target Frameworks Akavache V11.1 supports the following target frameworks: - **.NET Framework 4.6.2, 4.7.2** - Full support - **.NET Standard 2.0** - Cross-platform compatibility - **.NET 8.0, .NET 9.0** - Modern .NET support - **Mobile Targets**: - `net9.0-android` - Android applications - `net9.0-ios` - iOS applications - `net9.0-maccatalyst` - Mac Catalyst applications - `net9.0-windows` - Windows applications (WinUI) ## Installation Scenarios ### Scenario 1: New Application (Recommended) For most new applications, use SQLite with System.Text.Json: ```xml ``` ### Scenario 2: Migrating from V10.x For maximum compatibility when migrating: ```xml ``` ### Scenario 3: Encrypted Storage For applications handling sensitive data: ```xml ``` ### Scenario 4: Image/Media Applications For applications caching images or media: ```xml ``` ### Scenario 5: Complete Setup For applications using all features: ```xml ``` ## Platform-Specific Dependencies ### Mobile Applications (iOS/Android) **Android DllNotFoundException with SQLitePCLRaw.lib.e_sqlite3:** If you're getting `System.DllNotFoundException: 'e_sqlite3'` when using `SQLitePCLRaw.lib.e_sqlite3` on Android, use the appropriate bundle instead: ```xml ``` **Platform-specific bundle recommendations:** - **Android**: `SQLitePCLRaw.bundle_e_sqlite3` or `SQLitePCLRaw.bundle_green` - **iOS**: `SQLitePCLRaw.bundle_e_sqlite3` or `SQLitePCLRaw.bundle_green` - **Desktop/Server**: `SQLitePCLRaw.bundle_e_sqlite3` works fine ### .NET MAUI Applications ```xml ``` ### WPF/WinUI Applications ```xml ``` ### Linker Considerations #### iOS Linker Issues You may need to preserve certain types to prevent the linker from stripping them out in release builds: ```xml ``` Or add LinkerPreserve.cs to your iOS project: ```csharp public static class LinkerPreserve { static LinkerPreserve() { var sqliteBlobCacheName = typeof(SqliteBlobCache).FullName; var encryptedSqliteBlobCacheName = typeof(EncryptedSqliteBlobCache).FullName; } } ``` #### UWP Considerations Ensure your UWP project targets a specific platform (x86, x64, ARM) rather than "Any CPU". ## Package Version Compatibility | Component | V11.0 | V11.1 | Notes | |-----------|-------|-------|-------| | **Core Framework** | ✅ | ✅ | Backward compatible | | **Data Format** | ✅ | ✅ | V11.1 reads V11.0 and V10.x data | | **API** | ✅ | ✅ | Additive changes only | | **Serializers** | ✅ | ✅ | Cross-compatible | ## Serializer Decision Matrix | Framework Target | System.Text.Json | Newtonsoft.Json | Recommended | |------------------|-------------------|-----------------|-------------| | .NET Framework 4.6.2+ | ✅ (via NuGet) | ✅ | Either ✅ | | .NET Framework 4.7.2+ | ✅ (via NuGet) | ✅ | System.Text.Json ⭐ | | .NET Standard 2.0 | ✅ | ✅ | System.Text.Json ⭐ | | .NET 8.0+ | ✅ (built-in) | ✅ | System.Text.Json ⭐ | | .NET 9.0+ | ✅ (built-in) | ✅ | System.Text.Json ⭐ | | Mobile (iOS/Android) | ✅ | ✅ | System.Text.Json ⭐ | | V10.x Migration | ✅ | ✅ (easier) | Newtonsoft.Json (compatibility) | **Key:** - ✅ = Supported - ⭐ = Recommended choice - System.Text.Json = Better performance, smaller size - Newtonsoft.Json = Maximum compatibility, easier V10.x migration ## Next Steps After installation, proceed to: 1. **[Configuration](configuration.md)** - Set up the builder pattern 2. **[Basic Operations](basic-operations.md)** - Learn the core API 3. **[Platform Notes](platform-notes.md)** - Platform-specific setup if needed