Skip to content

Android support for devices with 16k pages

Marek Habersack edited this page Jun 13, 2024 · 17 revisions

Summary

Android is moving towards supporting devices with 16k memory page size, for the x64 and arm64 architectures. This affects all the native components of the application. In our case it means the MonoVM runtime, the BCL support libraries and .NET for Android native runtime and libraries.

Google plan to make support for 16k devices a requirement for Google Play application submissions next year.

A lot of work needs to be done.

Google have an article with more technical details.

How it affects our ecosystem

  • All the native libraries must be rebuilt with flags enabling 16k alignment of data and code
  • Code review of native (and maybe some managed?) code needs to be done in order to make sure we don't assume 4k page size anywhere. This includes MonoVM runtime/JIT/interpreter code.
  • APK/AAB archives we build must be aligned to 16k, instead of the current 4k
  • Visual Studio must create/update emulators it manages to use 16k system images
  • We need to start using Cuttlefish virtual Android devices on our CI
    • It requires a Linux VM with KVM enabled

Related resources