# 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