Share via

4KB Memory Page Warning: Upgraded MAUI project with .Net 10 still shows .SO files

Sreenivasan, Sreejith 840 Reputation points
2026-05-17T15:07:58.36+00:00

I have upgraded my MAUI project's .net version to .net 10 from .net 8 to resolve the 4KB memory warning from play store. After upgrade I have generated a new AAB file and change the extension to .zip from .aab. Then I extracted the .zip file and under the base\lib\arm64-v8a I found 16 .so files.

Name of files adding below:

  1. libarc.bin.so
  2. libassembly-store.so
  3. libdatastore_shared_counter.so
  4. libe_sqlite3.so
  5. libHarfBuzzSharp.so
  6. libimage_processing_util_jni.so
  7. libmono-component-marshal-ilgen.so
  8. libmonodroid.so
  9. libmonosgen-2.0.so
  10. libSkiaSharp.so
  11. libsurface_util_jni.so
  12. libSystem.Globalization.Native.so
  13. libSystem.IO.Compression.Native.so
  14. libSystem.Native.so
  15. libSystem.Security.Cryptography.Native.Android.so
  16. libxamarin-app.so

Is any of these cause the 16 KB memory page issue?

Below are the packages I am using in different projects:

.NET MAUI App:

<ItemGroup>
		<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="11.0.0" />
		<PackageReference Include="Autofac" Version="9.1.0" />
		<PackageReference Include="CommunityToolkit.Maui" Version="14.1.1" />
		<PackageReference Include="FFImageLoading.Maui" Version="1.3.2" />
		<PackageReference Include="Microsoft.Maui.Controls" Version="10.0.60" />
		<PackageReference Include="Microsoft.Maui.Controls.Compatibility" Version="10.0.60" />
		<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="10.0.8" />
		<PackageReference Include="NLog" Version="6.1.3" />
		<PackageReference Include="NLog.Extensions.Logging" Version="6.1.3" />
		<PackageReference Include="Plugin.Firebase" Version="4.2.1" />
		<PackageReference Include="SkiaSharp" Version="3.119.2" />
		<PackageReference Include="SkiaSharp.Views.Maui.Controls" Version="3.119.2" />
		<PackageReference Include="ZXing.Net.Maui" Version="0.7.4" />
		<PackageReference Include="ZXing.Net.Maui.Controls" Version="0.7.4" />
</ItemGroup>

.NET Class Library:

<ItemGroup>
    <PackageReference Include="JsonApiSerializer" Version="2.0.1" />
    <PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
    <PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
	<PackageReference Include="SkiaSharp" Version="3.119.2" />
	<PackageReference Include="SkiaSharp.Views.Maui.Controls" Version="3.119.2" /> 
</ItemGroup>

.NET MAUI Class Library:

<ItemGroup>
		<PackageReference Include="akavache" Version="10.0.28" />
		<PackageReference Include="Autofac" Version="9.1.0" />
		<PackageReference Include="CommunityToolkit.Maui" Version="14.1.1" />
		<PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.2" />
		<PackageReference Include="FFImageLoading.Maui" Version="1.3.2" />
		<PackageReference Include="Humanizer" Version="3.0.10" />
		<PackageReference Include="JsonApiSerializer" Version="2.0.1" />
		<PackageReference Include="Microsoft.Maui.Controls" Version="10.0.60" />
		<PackageReference Include="Microsoft.Maui.Controls.Compatibility" Version="10.0.60" />
		<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
		<PackageReference Include="NLog" Version="6.1.3" />
		<PackageReference Include="Plugin.Firebase" Version="4.2.1" />
		<PackageReference Include="SkiaSharp" Version="3.119.2" />
		<PackageReference Include="SkiaSharp.Views.Maui.Controls" Version="3.119.2" />
		<PackageReference Include="ZXing.Net.Maui" Version="0.7.4" />
		<PackageReference Include="ZXing.Net.Maui.Controls" Version="0.7.4" />
</ItemGroup>

Also when I rebuild the project in release mode I saw below message in output folder:

Android 16 will require 16 KB page sizes, shared library 'libe_sqlite3.so' does not have a 16 KB page size. Please inform the authors of the NuGet package 'SQLitePCLRaw.lib.e_sqlite3.android' version '2.1.9' which contains 'C:\Users\SreenivasanSr.nuget\packages\sqlitepclraw.lib.e_sqlite3.android\2.1.9\lib\net6.0-android31.0\SQLitePCLRaw.lib.e_sqlite3.android.aar'. See https://developer.android.com/guide/practices/page-sizes for more details. Android 16 will require 16 KB page sizes, shared library 'libe_sqlite3.so' does not have a 16 KB page size. Please inform the authors of the NuGet package 'SQLitePCLRaw.lib.e_sqlite3.android' version '2.1.9' which contains 'C:\Users\SreenivasanSr.nuget\packages\sqlitepclraw.lib.e_sqlite3.android\2.1.9\lib\net6.0-android31.0\SQLitePCLRaw.lib.e_sqlite3.android.aar'. See https://developer.android.com/guide/practices/page-sizes for more details.

I am not using any SQLite package, but I am using akavache package, it has a transitive package named akavache.sqlite3. I am using the 10.1.6 version of it. There is a new version (12.0.12) available for this package. but when I install it I am getting below error: I tried to resolve it, but no luck. All the other packages are latest.

The type or namespace name 'BlobCache' does not exist in the namespace 'Akavache' (are you missing an assembly reference?)

Developer technologies | .NET | .NET Multi-platform App UI
0 comments No comments

Answer accepted by question author

Nancy Vo (WICLOUD CORPORATION) 4,845 Reputation points Microsoft External Staff Moderator
2026-05-18T08:55:31.4433333+00:00

Hello @Sreenivasan, Sreejith ,

Thanks for your question.

The good news is that 15 out of 16 files are already 16KB compliant. These files (libSkiaSharp.so, libmonodroid.so, libmonosgen-2.0.so, libHarfBuzzSharp.so,...) are shipped by Microsoft and the .NET 10 runtime and are already built with correct alignment.

  1. You are not directly using SQLite, but akavache depends on akavache.sqlite3, which pulls in SQLitePCLRaw.lib.e_sqlite3.android v2.1.9 as a transitive dependency. This package ships an old libe_sqlite3.so compiled with 4KB alignment.

I recommend forcing SQLitePCLRaw.lib.e_sqlite3.android to use a newer compliant version. Add this to your MAUI App project and MAUI Class Library .csproj:

<ItemGroup>
  <PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="3.0.2" />
  <PackageReference Include="SourceGear.sqlite3" Version="3.50.4.2" />
</ItemGroup>

Then clean and rebuild:

dotnet clean
dotnet build -c Release
  1. Akavache v12 is a major breaking release. The static class BlobCache was removed or restructured. Your existing code that references Akavache.BlobCache breaks because the API changed.

Since v10 already works in your project and your only goal is fixing the 16KB warning (which is caused by SQLitePCLRaw, not Akavache itself), do not upgrade Akavache to v12 yet. Just apply the SQLitePCLRaw fix from problem 1 above.

Please try again and let me know if it works.

I hope this addresses your question. If this response was helpful, please consider following the guidance to provide feedback.

Was this answer helpful?

1 person found this answer helpful.

1 additional answer

Sort by: Most helpful
  1. AI answer

    2026-05-17T15:08:15.93+00:00

    libe_sqlite3.so is the library that triggers the 16 KB page size warning.

    The build output explicitly identifies it:

    Android 16 will require 16 KB page sizes, shared library 'libe_sqlite3.so' does not have a 16 KB page size. Please inform the authors of the NuGet package 'SQLitePCLRaw.lib.e_sqlite3.android' version '2.1.9'...

    So among the .so files listed, libe_sqlite3.so is the one causing the issue. The others in the list are not mentioned by the tooling as problematic.

    libe_sqlite3.so comes from the SQLitePCLRaw.lib.e_sqlite3.android package, which is being pulled in transitively by Akavache (via akavache.sqlite3). Updating Akavache to a version that depends on a newer SQLitePCLRaw.lib.e_sqlite3.android (with 16 KB–compatible binaries) is the correct direction.

    The error after updating Akavache:

    The type or namespace name 'BlobCache' does not exist in the namespace 'Akavache'

    indicates a breaking change in the newer Akavache version (API surface changed, BlobCache removed or moved). Resolving that requires updating the application code to the new Akavache API (for example, replacing Akavache.BlobCache usages with the new recommended cache access pattern for that version) or, if that is not feasible, switching to another caching library that already ships 16 KB–compatible native binaries.

    The .NET 10 upgrade and the other .so files listed are not the source of the 16 KB page size warning; the warning is specifically tied to libe_sqlite3.so from SQLitePCLRaw.lib.e_sqlite3.android.


    References:

    AI-generated content may be incorrect. Read our transparency notes for more information.

    Was this answer helpful?

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.