Skip to content

Latest commit

 

History

History
212 lines (158 loc) · 6.58 KB

File metadata and controls

212 lines (158 loc) · 6.58 KB

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)

<PackageReference Include="Akavache" Version="11.1.*" />

SQLite Storage Backends (recommended)

<!-- SQLite persistence -->
<PackageReference Include="Akavache.Sqlite3" Version="11.1.*" />

<!-- Encrypted SQLite persistence -->
<PackageReference Include="Akavache.EncryptedSqlite3" Version="11.1.*" />

Serializers (Choose One - Required!)

<!-- System.Text.Json (fastest, .NET native) -->
<PackageReference Include="Akavache.SystemTextJson" Version="11.1.*" />

<!-- Newtonsoft.Json (most compatible) -->
<PackageReference Include="Akavache.NewtonsoftJson" Version="11.1.*" />

Optional Extensions

<!-- Image/Bitmap support -->
<PackageReference Include="Akavache.Drawing" Version="11.1.*" />

<!-- Settings helpers -->
<PackageReference Include="Akavache.Settings" Version="11.1.*" />

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:

<PackageReference Include="Akavache.Sqlite3" Version="11.1.*" />
<PackageReference Include="Akavache.SystemTextJson" Version="11.1.*" />

Scenario 2: Migrating from V10.x

For maximum compatibility when migrating:

<PackageReference Include="Akavache.Sqlite3" Version="11.1.*" />
<PackageReference Include="Akavache.NewtonsoftJson" Version="11.1.*" />

Scenario 3: Encrypted Storage

For applications handling sensitive data:

<PackageReference Include="Akavache.EncryptedSqlite3" Version="11.1.*" />
<PackageReference Include="Akavache.SystemTextJson" Version="11.1.*" />

Scenario 4: Image/Media Applications

For applications caching images or media:

<PackageReference Include="Akavache.Sqlite3" Version="11.1.*" />
<PackageReference Include="Akavache.SystemTextJson" Version="11.1.*" />
<PackageReference Include="Akavache.Drawing" Version="11.1.*" />

Scenario 5: Complete Setup

For applications using all features:

<PackageReference Include="Akavache.Sqlite3" Version="11.1.*" />
<PackageReference Include="Akavache.EncryptedSqlite3" Version="11.1.*" />
<PackageReference Include="Akavache.SystemTextJson" Version="11.1.*" />
<PackageReference Include="Akavache.Drawing" Version="11.1.*" />
<PackageReference Include="Akavache.Settings" Version="11.1.*" />

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:

<!-- For Android (recommended): Use bundle_e_sqlite3 instead of lib.e_sqlite3 -->
<ItemGroup>
    <PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="2.1.11" />
</ItemGroup>

<!-- Alternative: Use bundle_green for cross-platform compatibility -->
<ItemGroup>
    <PackageReference Include="SQLitePCLRaw.bundle_green" Version="2.1.11" />
</ItemGroup>

<!-- If using Encrypted SQLite, also add: -->
<ItemGroup>
    <PackageReference Include="SQLitePCLRaw.bundle_e_sqlcipher" Version="2.1.11" />
</ItemGroup>

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

<!-- Core Akavache packages -->
<PackageReference Include="Akavache.Sqlite3" Version="11.1.*" />
<PackageReference Include="Akavache.SystemTextJson" Version="11.1.*" />

<!-- SQLite support for all platforms -->
<PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="2.1.11" />

WPF/WinUI Applications

<!-- Standard setup works out of the box -->
<PackageReference Include="Akavache.Sqlite3" Version="11.1.*" />
<PackageReference Include="Akavache.SystemTextJson" Version="11.1.*" />

Linker Considerations

iOS Linker Issues

You may need to preserve certain types to prevent the linker from stripping them out in release builds:

<!-- Add to your .csproj file: -->
<ItemGroup>
  <TrimmerRootAssembly Include="SQLitePCLRaw.lib.e_sqlite3.## YOUR-PLATFORM ##" RootMode="All" />
</ItemGroup>

Or add LinkerPreserve.cs to your iOS project:

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 - Set up the builder pattern
  2. Basic Operations - Learn the core API
  3. Platform Notes - Platform-specific setup if needed